Can anyone point me to a good reference that will allow me to rough size a JBoss server? What I am looking for is either something like: If I have a server with 'x' cpu power, and 'y' memory, then to achieve a good cpu performance (ie on average 35-45% utilization), I can only use 'n' beans of approximate size 'z'. Or, converesly, if I am going to use 'w' jms queues, and 't' session beans, and each session bean is of some average size, how big of a system platform do I need to minimally put in (or get multiples of depending)?
Obviously there is no hard/fast rule here, but even observations would be helpful.
I think 35-45% utilization is low. You can generally get good performance out of a machine even up in the 80-90% utilization range. Why underutilize a CPU?
Its hard to size based on number and "size" of beans. How do you measure the size? You can create a simple loop that does a database query and creates a new Date object and run the loop 500 times. That bean would probably perform a lot worse (more IO, slower response time, more CPU) than a bean that has no looping and just does some simple object manipulation and is 10-50 times as many lines of code. You'll have to load test your application before you can make a judgment on how to size your machine. I would say that even rules of thumb are probably useless here.
I think your answer is the point to my question. If I can't use a size of bean, then what other options do I have in order to do initial sizing requirements? I agree, a size is 'relative' matter, sorta like the KLOC value for determining time estimates, but these are at least quantifiable.
So, maybe a different type question could be, 'how do you recommend sizing a system using JBOSS?'.
By the way, my 35-45% utilization number is what I would consider a well running machine to be at (given that it will spike obviously at times) [and thats a different problem, i.e. what is a "well running machine" supposed to be at ]
And of course, its just not cpu, but certianly memory utilization needs to be considered as well.
bottom line for me is what type of sizing constraints, tricks, or what ever else, is available for Jboss?
Joined: May 14, 2008
At this point you're not really asking about JBoss, but rather what methodology I use for hardware sizing. Just searching online will find a few useful resources:
The difficult thing is that you're often trying to figure out what hardware you need to buy without being able to run your application on that hardware to verify. Its quite a catch-22. Without being able to test on the hardware that you're going to buy, its always a guess. If you're fortunate to have a few different hardware configurations at your disposal for performance testing (and a dedicated subnet to avoid network collisions), then you can get a better guage.
But the short of it is that you'll have to create load tests and run them against something before you can make any kind of statement about hardware sizing.