The thr_arg is a queue of requests. When running with a threadpool, each thread 
reads from the thr_arg queue to determine the request it should process.  So 
with 10 threads, 10 of them are stuck in a while loop, pulling thread arguments.

The get_thr_arg function looks at the queue.  If it’s empty, it blocks waiting 
for a signal.  (no error)
When a request comes in, it’s pushed onto the queue, and a signal is generated. 
  One thread will wake up, grab the first item off the queue.  If there’s more 
than one item left in the queue, another signal is generated. (to have another 
thread pick up the next request)  Then what was popped off the top of the queue 
is processed by the thread.

This error is generated when a thread wakes up, tries to process a request but 
none is available.  In that case, it throws this warning, and goes back into 
waiting status.  It’s either an indication that somewhere the conditional for 
signaling a wakeup is possibly signaling too many wakeups, or that cond_wait is 
prematurely waking up multiple threads.

If pound is functioning properly, these errors shouldn’t be a problem… as it 
just goes back and starts waiting again.  (and you could comment the warning 
out in http.c)  If it’s not, I’ll  need more information.


How often are you seeing these messages?
What OS are you running?
What version of pound are you using?
Were you getting these before increasing the default number of threads?


Joe

From: Brad Allison [mailto:[email protected]]
Sent: Wednesday, August 28, 2013 12:47 PM
To: [email protected]
Subject: [Pound Mailing List] Re: NULL: get_thr_arg spamming my syslog

Any ideas?


On Tue, Aug 27, 2013 at 3:45 PM, Brad Allison 
<[email protected]<mailto:[email protected]>> wrote:
My syslog is getting spammed by :

Aug 27 19:44:36 pod01-lb-01 pound: NULL get_thr_arg
Aug 27 19:44:36 pod01-lb-01 pound: NULL get_thr_arg
Aug 27 19:44:36 pod01-lb-01 pound: NULL get_thr_arg
Aug 27 19:44:36 pod01-lb-01 pound: NULL get_thr_arg
Aug 27 19:44:36 pod01-lb-01 pound: NULL get_thr_arg
Aug 27 19:44:36 pod01-lb-01 pound: NULL get_thr_arg
Aug 27 19:44:36 pod01-lb-01 pound: NULL get_thr_arg
Aug 27 19:44:36 pod01-lb-01 pound: NULL get_thr_arg
Aug 27 19:44:36 pod01-lb-01 pound: NULL get_thr_arg
Aug 27 19:44:37 pod01-lb-01 pound: NULL get_thr_arg

We just increased the pound threads from the default 128 to 500.

What does this error mean?

-brad

Reply via email to