We are trying to achieve scalability with Weblogic using Stateless session bean.
We increased the number of beans the number of cpus and the number of concurrent clients which invoke calls to the beans. but the improvement that we got was 20% off in time (1cpu vs. 2cpus).
For the tests we decided to eliminate the connection to Databse, so we are not updating the database or read from it. All the data is located in static objects which isolate us from the DB. After doing that we again couldn't achieve scalability.
My question is does any one have a hint where to look for the problem.
I also had the same problem of handling large amont of data using stateless session beans. U can figure out which objects are not being garbagr collected using Optimizeit profiler . And u can figure out which part of the program is consuming more cpu cycles. optimizeit can be downloded from borland website. By running gc occassionally performance improves . But that may slowdown the server for a moment
How many servers were you running?
There is an upper limit of threads (around 15) after which the overhead of managing the resources offsets the number of threads you make available.
If you run multiple instances of WebLogic, in a cluster, with stateless session beans (Which, since you don't update any DB can safely be marked idempotent) then you should start to see the kind of scalability you are looking for.
But, there are some things you can't do when clustering. Most of them relate to entity beans and the like which it sounds like you aren't using.
Try it and let me know how you get on.
Do you see much idle cpu time? If so, try increasing the number of execute threads. A rough guide is 25 execute threads per cpu. Of course, this will be a trial and error scenario. Depends on the power of your CPUs etc.
You can also try increasing the percentage of socket readers.