SJSAS on multiprocessor systems

OK I'm doing some performance testing with SJSAS Platform Edition (version 8.2 in this case - can't upgrade this easily) on Windows Server 2003R2 & Solaris 10 (x86). The systems are dual processor Pentium Ds.The app is multithreading. Tried various JRE versions, currently 1.6.

What I see on both systems is that only one cpu is working at any one time. It'll flip after a few seconds from one to the other. I don't believe it's a single thread doing all the work.Cpu utilisation is only ever 50%. This is the same on Windows & Solaris. I'm more familiar with Linux and have never seen this before. Am I being dumb (very likely) or is something not set quite right? Or is it a coding issue?I'm guessing a thread is bound to a cpu, runs to completion, then another thread kicks off, which the OS is assigning to the other cpu. But not concurrently - grr!

[881 byte] By [ocoro03a] at [2007-11-27 10:41:29]
# 1

I'm not sure what you mean by "the app is multithreading" -- typically all the threading is handled by the application server. That's one reason why you use an appserver rather than writing an entire program.

If you're starting your own threads, can you tell us what exactly you're doing? If you're just expecting the appserver to handle the threading, then how many requests are you sending simultaneously? Each servlet request (or whatever) will only use one thread; multiple simultaneous requests can utilize multiple threads. How many acceptor threads do you have configured? The default is 5, meaning you could run 5 requests simultaneously -- did you change that to 1?

Though that assumes your requests come in through HTTP -- do they come in via IIOP instead (though the default thread pool configuration there is even higher)?

-Scott

sdoa at 2007-7-28 19:12:54 > top of Java-index,Application & Integration Servers,Application Servers...
# 2

Yep - it kind of goes without saying it's multithreading ;)I'm not unfortunately the author of the code code so can't answer in too much detail right now. Though you're correct in that it receives requests through IIOP.

Will check regarding acceptor threads ... many thanks!

ocoro03a at 2007-7-28 19:12:54 > top of Java-index,Application & Integration Servers,Application Servers...
# 3

If your requests come in via IIOP, then you must be using EJBs, and EJBs are not allowed to create their own threads. So if that's what you're doing, it may work, but it's a violation of the Java EE spec. [Servlets are allowed to create a thread, but that's not really a good thing to do.]

If you have multiple clients accessing the EJBs, then you need to look at the configuration of thread-pool-1 -- that's what runs the IIOP requests. The acceptor threads handles only HTTP requests.

sdoa at 2007-7-28 19:12:54 > top of Java-index,Application & Integration Servers,Application Servers...
# 4

Yep - in this particular instance incoming requests are purely from IIOP. SJSAS settings in domain.xml are all default -max IIOP requests is dictact by orb max-requests (?) (which is set to 1024).

I guess I really just want to get an idea - the behaviour I'm seeing regarding processor usage sounds pretty sub-optimal right?

ocoro03a at 2007-7-28 19:12:54 > top of Java-index,Application & Integration Servers,Application Servers...