Hi Stefano,

thanks for your fast reply! I swithched now to james 2.3.1 but I am seeing only minimal improvements, maybe 5%.

What I observe is still too many threads waiting - at the OS level I see that the LWPs(the light weight processes that the java threads from james are mapped on) spend most of their time waiting on user locks(around 80-100%), spending only max 8-12% in user time...

Asuming that the OS is distributing the java thread well among the available 40 hardware treads, what would be the best configuration for a load test on say 25 concurrent smtp client connections in terms of number of spool threads and max. thread number in the default thread pool? Can I get somehow rid of the impact of the watchdog-threads?

Thanks and best regards!
Peter

Stefano Bagnara schrieb:
Peter Doschkinow ha scritto:
Hi,

I am running james 2.2.0 on a highly scalable CMT Solaris box with 40

Please test 2.3.1. No developer looks at 2.2.0 code since years, so you
should first upgrade to 2.3.1 and see if the result is the same.

Stefano

hardware threads trying to get a maximum throughput. I am using a load
generator that is sending 17k-mails in a loop to james on a configurable
number of parallel running client connections. Now the problem is, that
I can not get up the CPU usage, it remains at 0%, even if I increase the
number of concurrent clients. I also played with different
configurations of work thread numbers(e.g. 5,30,100), but this did not
help much. With more concurrent clients and more working threads in the
pool I get more throughput, but far more less than I should if james
scaled as expected. What I am seeing in the thread dumps is that  a lot
of working threads are waiting in a TIMED_WAITING or WAITING  state,
below is a snippet.

Do you have any configuration hints to get better scalability and
throughput?

How important are the InaccurateTimeoutWatchdog -s and would it help to
play with the timeout parameter in their constructor? I do not know
james well and had my first contact with this software only a couple of
days ago..

Any hints and suggestions are welcome!

Thanks and best regards
Peter

----------------------------------------------------------------------------------------------------------------------

"default Worker #47" daemon prio=3 tid=0x005f9c00 nid=0x78 in
Object.wait() [0x8f07f000..0x8f07fa70]
  java.lang.Thread.State: TIMED_WAITING (on object monitor)
   at java.lang.Object.wait(Native Method)
   - waiting on <0xe350d260> (a
org.apache.james.util.watchdog.InaccurateTimeoutWatchdog)
   at
org.apache.james.util.watchdog.InaccurateTimeoutWatchdog.run(InaccurateTimeoutWatchdog.java:181)

   - locked <0xe350d260> (a
org.apache.james.util.watchdog.InaccurateTimeoutWatchdog)
   at
org.apache.james.util.thread.ExecutableRunnable.execute(ExecutableRunnable.java:55)

   at org.apache.james.util.thread.WorkerThread.run(WorkerThread.java:91)
   - locked <0x9f113fb0> (a org.apache.james.util.thread.WorkerThread)

  Locked ownable synchronizers:
   - None

"default Worker #46" daemon prio=3 tid=0x00e6e800 nid=0x77 runnable
[0x8f17f000..0x8f17faf0]
  java.lang.Thread.State: RUNNABLE
   at java.net.SocketInputStream.socketRead0(Native Method)
   at java.net.SocketInputStream.read(SocketInputStream.java:129)
   at java.io.BufferedInputStream.read1(BufferedInputStream.java:256)
   at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
   - locked <0xe350d290> (a java.io.BufferedInputStream)
   at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264)
   at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306)
   at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158)
   - locked <0xe350d748> (a java.io.InputStreamReader)
   at java.io.InputStreamReader.read(InputStreamReader.java:167)
   at java.io.BufferedReader.fill(BufferedReader.java:136)
   at java.io.BufferedReader.read(BufferedReader.java:157)
   - locked <0xe350d748> (a java.io.InputStreamReader)
   at
org.apache.james.util.CRLFTerminatedReader.readLine(CRLFTerminatedReader.java:98)

   at
org.apache.james.smtpserver.SMTPHandler.readCommandLine(SMTPHandler.java:505)

   at
org.apache.james.smtpserver.SMTPHandler.handleConnection(SMTPHandler.java:358)

   at
org.apache.james.util.connection.ServerConnection$ClientConnectionRunner.run(ServerConnection.java:417)

   at
org.apache.james.util.thread.ExecutableRunnable.execute(ExecutableRunnable.java:55)

   at org.apache.james.util.thread.WorkerThread.run(WorkerThread.java:91)
   - locked <0x9f125b50> (a org.apache.james.util.thread.WorkerThread)

  Locked ownable synchronizers:
   - None

"default Worker #45" daemon prio=3 tid=0x008e8800 nid=0x76 in
Object.wait() [0x8f27f000..0x8f27fb70]
  java.lang.Thread.State: WAITING (on object monitor)
   at java.lang.Object.wait(Native Method)
   - waiting on <0x9f113c18> (a org.apache.james.util.thread.WorkerThread)
   at java.lang.Object.wait(Object.java:485)
   at
org.apache.james.util.thread.WorkerThread.waitUntilCondition(WorkerThread.java:173)

   - locked <0x9f113c18> (a org.apache.james.util.thread.WorkerThread)
   at org.apache.james.util.thread.WorkerThread.run(WorkerThread.java:83)
   - locked <0x9f113c18> (a org.apache.james.util.thread.WorkerThread)

  Locked ownable synchronizers:
   - None




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to