views:

50

answers:

1

We have a brand new webapp written that runs on Tomcat. So far, only one client is using it through the day. They run about 180 unique logins a day. Not really a lot IMO. Now, we managed to sell it to a brand new client who likes and wants to roll it out to 50,000 clients. How many of them will login at the same time - no idea. But I need to do the whole thing - allocate, create, config and maintain. OK - last is simple(errrr).

The application runs off of Tomcat 5.5 on Gentoo (I'm thinking to upgrade to Tomcat 6) with MSSQL & mySQL behind. I do realize that a more enterprise ready application would be a better fit, but that's not an option at the moment. Since I've never done this before, I'm a bit lost. Can someone advice on how to go about estimating the equipment requirements for this client? Tomcat does have clustering, so that I can do. MS SQL - I'm sure they have something too. I'm thinking to stick it behind LVS (which we do use at the moment for something else too).

Any help from people who deal with these details is greatly appreciated!

A: 

1) Determine what is acceptable latency time for pages to come up in an acceptable way.
2) Determine the average and peak amount of concurrent users.
3) Get a tool like http://sourceforge.net/projects/httperf/ and run with these numbers.
4) If you are still OK then run up to the point your app is no longer acceptable.
5) Tune
6) Go to step 3.

The problem with giving you a size for your needs is that all apps are different. It really depends on the size of your requests, frequency, and how large each one is, it also depends on the size as well as the queries you do (Many joins, indexing on tables, db configuration, etc...)

Your best bet is to take a machine like the one you are running on now and do some benchmarking as above. That will determine a base of how much the machine can take you assuming you do not optimize anything.

Romain Hippeau