Hi,
I am running james 2.2.0 on a highly scalable CMT Solaris box with 40
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
--
Peter Doschkinow
Software Architect
Sun Microsystems GmbH
Sonnenallee 1, 85551 Kirchheim-Heimstetten, Germany
mailto:[EMAIL PROTECTED]
http://www.sun.com
Sun Microsystems GmbH
Sonnenallee 1, D-85551 Kirchheim-Heimstetten
Amtsgericht München: HRB 161028
Geschäftsführer: Thomas Schröder, Wolfgang Engels, Dr. Roland Bömer
Vorsitzender des Aufsichtsrates: Martin Häring
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]