[syslog-ng]losing messages using syslog-ng-1.4.7 & libol-0.2.20
matthew.copeland@honeywell.com
matthew.copeland@honeywell.com
Thu, 26 Oct 2000 16:18:23 +0000 (UTC)
>
> You're almost certainly overflowing the internal queue in either the
> server or the clients or both. Try logging the messages on the clients to
> a file as well as the network, and see if the local syslog-ngs are
> dropping messages before the server has any chance.
I can give this a try on the server side, but on the client side I
have a custom program that is doing the sending. It could be that the
buffers are getting overflown there, but I am finding that I am having a
hard time telling. Also, if it were on the client side, then in theory, I
should get one of the attempts that gets all of the messages as the
os scheduler schedules the threads differently to send, so I am thinking
it must be on the server side somewhere.
>
> You can put some printf statements into the libol code to trace what is
> happening with each log entry and the output queue. I did this to mine
> and I can see in the output that syslog-ng sometimes (often) simply throws
> messages away. The interesting parts are in pkt_buffer.c and queue.c in
> libol:
>
> if (self->queue_size == self->queue_max) {
> /* fifo full */ <== oops
> ol_string_free(string); <== this tosses your message
> return ST_FAIL | ST_OK; <== return code is ignored
> }
Okay I set log_fifo_size to be something like 72,000 does that not
integrate well with queue_max? I will give this a try though and see if
this is where I am losing messages.
>
> I've raised this issue on this list before, but have been ignored.
> Regardless of how high your fifo size is, syslog-ng will lose messages if
> the sources generate messages faster than the destintation can consume
> them. Raising the fifo size only masks transients, but does not help in
> the steady state.
>
> The symptom is easily seen if you send very small message, such as a
> three-digit sequence and a newline. This puts as much stress as possible
> on syslog-ng. If you are suffering from this problem, you will notice in
> your logs that large blocks of messages are missing. You can generate
> these messages very quickly with a perl script writing to a named pipe.
>
> -jwb
>