100% CPU utilization in Zope after LDAP connection timeout
Matthew X. Economou
xenophon at irtnog.org
Thu Mar 17 13:51:30 CET 2005
Michael,
I installed python-ldap 2.0.6 on Python 2.4 and using OpenLDAP 2.2.23,
all of which came from the FreeBSD ports tree. According to ldd(1),
python-ldap's helper library links to the reentrant versions of the
OpenLDAP client libraries:
/usr/local/lib/python2.4/site-packages/_ldap.so:
libldap_r-2.2.so.7 => /usr/local/lib/libldap_r-2.2.so.7
liblber-2.2.so.7 => /usr/local/lib/liblber-2.2.so.7
libssl.so.3 => /usr/lib/libssl.so.3
libcrypto.so.3 => /lib/libcrypto.so.3
I traced the Zope process with ktrace(8). There are a number of calls
to poll(2) and the SIGPROF signal handler (which resets itself,
apparently, as I see follow-up calls to gettimeofday(2) and
sigprocmask(2)). These calls repeat. I believe SIGPROF is used by the
threading implementation.
I attached to the Zope instance with GDB. While it doesn't list any
threads (command "info threads"), GDB gives me the following backtrace:
(gdb) bt
#0 0x00000001601bd320 in _get_curthread () from /usr/lib/libc_r.so.5
#1 0x00000001601c1be4 in _thread_leave_cancellation_point () from
/usr/lib/libc_r.so.5
#2 0x00000001601b70e8 in select () from /usr/lib/libc_r.so.5
#3 0x0000000160ca4644 in ldap_int_select () from
/usr/local/lib/libldap_r-2.2.so.7
#4 0x0000000160c8c9a4 in wait4msg () from
/usr/local/lib/libldap_r-2.2.so.7
#5 0x0000000160c8c440 in ldap_result () from
/usr/local/lib/libldap_r-2.2.so.7
#6 0x0000000160c5ce50 in l_ldap_result2 () from
/usr/local/lib/python2.3/site-packages/_ldap.so
#7 0x00000001200cf9ac in PyCFunction_Call ()
#8 0x00000001200186f4 in PyObject_Call ()
#9 0x0000000120080228 in PyEval_GetFuncDesc ()
#10 0x000000012007c7a8 in PyEval_EvalCode ()
#11 0x000000012007dcb8 in PyEval_EvalCodeEx ()
> Could you please try to reproduce this problem without Zope? Maybe
> some small multi-threaded client app sending similar LDAP requests
> to the server?
I wish I knew enough Python to write a few test cases of my own. I will
try.
Best wishes,
Matthew
--
"The challenge of a moral life is to do nothing that requires
forgiveness." - Roger Ebert in his review of _The Woodsman_
More information about the python-ldap
mailing list