The problem: we accept a websockets message, send a message via unix socket to 
another program, it sends a response back via a different socket to our 
websockets module. It works 2 times, on the third attempt, the return socket is 
successfully written to. We have a listener who is waiting (socket accept 
call), yet this latter never receives the reply. 

Apache 2.4 (Linux, 12.04 Ubuntu) has a main process and three helper processes. 
It selects one helper per websockets message. I've done strace on each helper 
and the main process. I get what I expect from the helpers, 2 quiescent and 1 
processing up to and including our accept. The main process, when this third 
attempt is made, seems to go haywire and spawns another 28 processes, seems to 
hit some limit and then kills them off.

How can I make Apache (a) not lose its mind, (b) get my message delivered to 
the accept in the daughter process that is executing our websockets code? Our 
websockets code appears to be working correctly and not failing to release any 
memory or resources. I've checked return values on the socket close for the 
writer and he reports no error. Turning up the logging level doesn't give me 
any more information. Turning up the resource limits doesn't appear to effect 
Apache for this problem. I'm stumped as is everyone in my organization.


Reply via email to