This problem is a fairly specific problem caused by an
Enterprise JavaBean™ having an ORB.init() call in it. When the ORB.init()
call is made, it causes an ORB instance to be created. When an ORB
instance is created it will create five threads: four listener threads and
1 reader thread. These threads would only get destroyed if the ORB
instance is destroyed. If over time, more ORB instances are created,
eventually the Application Server performance will be affected. It may
also cause java.lang.OutOfMemoryErrors to be thrown.
The javacore file or thread dump shows that there are a large number of
ORB listener threads and ORB reader threads.
This is what an ORB reader thread looks like.
RT=383:P=570960:O=123:WSSSLTransportConnection[addr=165.245.2.81,port=47765,local=46289]"
(TID:0x57FD8938, sys_thread_t:0x9AB1F3B0, state:R, native ID:0x22EBFC)
prio=5
The O= value is the ORB instance id. This says that there are 123 ORB
instances on this Application Server. The address shows the address that
the ORB connection is to; the port is the port number that is used.
This is what an ORB listener thread id looks like.
"LT=496:P=570960:O=123:port=46288" (TID:0x57FD8990,
sys_thread_t:0x9AB1EF10, state:R, native ID:0x22E7FB) prio=5
Again the O=# is the ORB instance id. The port is the socket port that
this is listening on.
|