Re: PECL/memcached segfaults
[email protected] (Brian Moon) Thu, 06 May 2010 01:11:37 -0500
| Newsgroups | php.pecl.dev |
|---|---|
| Message-ID | <[email protected]> |
Well, apparently, I am not the only one. http://pecl.php.net/bugs/bug.php?id=17382 Brian. -------- http://brian.moonspot.net/ On 5/6/10 1:09 AM, Brian Moon wrote: > I was finally able to reproduce the cause on my dev server. The > segfaults were caused by the process exceeding its open file limit. This > explains why only one data center had segfaults (the busier one) and the > other only saw increasing connections to memcached. > > On a dev server, running the worker MPM and mod_php, I configured the > server with: > > StartServers 2 > MinSpareThreads 20 > MaxSpareThreads 20 > ThreadsPerChild 10 > MaxClients 20 > MaxRequestsPerChild 0 > > This creates 2 Apache processes, each with 10 threads for a total of 20 > children. > > I am using persistent connections when creating the memcached connections. > > The memcached connection count grows and grows and grows until the > process hits 1024 open files and is killed by the kernel. > > I did write the persistent string being sent to the object constructor > out to the php error log to ensure we were not sending a unique string > each time. We are not. At most there should be two connections per > child/process (not sure how the persistence is handled for threads). > pecl/memcache creates them per child (thread). > > I turned off the persistence and things work as they should. The > connection count does not grow. > > So, next I turned off worker thinking this was a threading issue. But, > the problem persisted. > > In the end, I was able to reproduce the issue with a simple script. Here > is the script and output: http://pastebin.com/40vzVM7D There is a run > with pecl/memcache there as well to show the difference in behavior. > > Tested platforms: > > Gentoo Linux > PHP/5.2.13 > libmemcached/0.38 thru 0.40 > pecl-memcached/1.0.0 thru 1.0.2 > > Mac - Darwin Kernel Version 10.3.0 > PHP 5.3.1 > libmemcached/0.40 > pecl-memcached/1.0.2 >