[omniORB] omniORB 4.0.5 server hangs under heavy load
p.klotz at icoserve.com
p.klotz at icoserve.com
Sun Jan 16 11:31:54 GMT 2005
Hi
We encounter sporadic hangs of our omniORB 4.0.5 based servers. The
servers operate in thread pool mode with 5 threads under Red Hat
Enterprise Linux 3 Update 3.
In a torture test 40 clients connect to the server in parallel. Each
client performs a single method call on the server (a simple "void ping()"
method), exits and is started again. In this scenario it takes from a few
minutes to a few hours until the server stops responding. It does not
matter if the clients and the server run on the same or on different
machines.
Here is a trace output at level 10 (Messages starting with a '+' were
added by me in order to better understand what is going on):
omniORB: (2) +omniAsyncInvoker::insert: omniTask::AnyTime: pd_idle_threads
omniORB: (6) throw giopStream::CommFailure from
giopStream.cc:831(0,NO,COMM_FAILURE_UnMarshalArguments)
omniORB: (2) +omniAsyncInvoker::insert: omniTask::AnyTime,
omniTask*=0x9db8ea8, pd_idle_threads=0x9db87e0, pd_nthreads=5,
pd_maxthreads=5, pd_totalthreads=6
omniORB: (2) +omniAsyncInvoker::insert: omniTask::AnyTime: pd_idle_threads
omniORB: (6) throw giopStream::CommFailure from
giopStream.cc:831(0,NO,COMM_FAILURE_UnMarshalArguments)
omniORB: (2) +omniAsyncInvoker::insert: omniTask::AnyTime,
omniTask*=0x9db8af0, pd_idle_threads=0x9db87e0, pd_nthreads=5,
pd_maxthreads=5, pd_totalthreads=6
omniORB: (2) +omniAsyncInvoker::insert: omniTask::AnyTime: pd_idle_threads
omniORB: (2) +omniAsyncInvoker::insert: omniTask::AnyTime,
omniTask*=0x9db8b18, pd_idle_threads=(nil), pd_nthreads=5,
pd_maxthreads=5, pd_totalthreads=6
omniORB: (6) throw giopStream::CommFailure from
giopStream.cc:831(0,NO,COMM_FAILURE_UnMarshalArguments)
omniORB: (2) +omniAsyncInvoker::insert: omniTask::AnyTime: else
omniORB: (3) throw giopStream::CommFailure from
giopStream.cc:831(0,NO,COMM_FAILURE_UnMarshalArguments)
omniORB: (4) throw giopStream::CommFailure from
giopStream.cc:831(0,NO,COMM_FAILURE_UnMarshalArguments)
omniORB: (3) AsyncInvoker: thread id = 3 has exited. Total threads = 6
omniORB: (4) AsyncInvoker: thread id = 4 has exited. Total threads = 6
omniORB: (6) AsyncInvoker: thread id = 6 has exited. Total threads = 6
omniORB: (5) AsyncInvoker: thread id = 5 has exited. Total threads = 3
At some point in time all worker threads exit and although clients want to
connect, no new worker threads are started. The server produces 100% CPU
load and all clients hang.
So far I was not able to produce hangs at trace levels higher than 10. The
additional output seems to lower the probability of the hangs.
In
http://www.omniorb-support.com/pipermail/omniorb-list/2004-November/026184.html
Duncan provides a patch for a problem that I would consider at least very
similar to this one. I applied the patch to omniORB 4.0.5 but the
resulting server blocks without starting a single worker thread.
Any tips and hints are welcome.
Best regards, Peter.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.omniorb-support.com/pipermail/omniorb-list/attachments/20050116/305c8b79/attachment.htm
More information about the omniORB-list
mailing list