On Tue, Oct 30, 2012 at 03:21:11AM +0100, Alan DeKok wrote:
On 2012-10-29, at 10:47 PM, Brian Candler <B.Candler@pobox.com> wrote:
Well, I just wondered under what circumstances the server might stop answering queries
Stop blaming the server.
I am not. I am trying to understand what is going on.
The log message says that the rediswho module is blocking. So.... The rediswho module is the one blocking the server.
If a particular server thread becomes unresponsive, is there some functionality in the core which kills that thread and starts a new one? Or would the server eventually grind to a halt?
You can't really kill threads. Doing that leads to memory leaks, open file descriptors, permanently locked mutexes, etc.
Make sure that your databases don't take the server down.
OK this is clear: if the rediswho module blocks indefinitely, it will take down that thread indefinitely. Once the thread pool is all in this state, the server will stop responding. This is what I saw, so I will dig deeper. The code which picks a connection from a pool appears to be closely borrowed from rlm_sql/sql.c (and therefore is probably OK) Regards, Brian.