On Fri, 2008-02-29 at 11:24 +0000, AndyH@nominet.org.uk wrote:
4) As syslog-ng is not threaded, it polls its inputs and writes its outputs from the same thread. E.g. while the output is being written, inputs are starved somewhat. This causes latency on the input side and as the STREAMS buffer is small, this latency causes more messages to be dropped, than syslogd.
Can it be made threaded? Although it might still lose some messages it should lose less of them.
I'm planning to use a threading model in syslog-ng 2.2, but in 2.0.x, it won't happen. An alternative solution is to have your application use a flow-controlled IPC mechanism, like a UNIX domain socket or a pipe.
All options I have left is to force clients to wait somewhat when they invoke the syslog door, this'd be poor man's flow-control though.
This patch fixes the door initialization problem:
http://git.balabit.hu/?p=bazsi/syslog-ng-2. 1.git;a=commit;h=5b65710e9781203d005e6f4bcb3f33bad4f827b6
patch fails to compile:
afstreams.c:195: warning: implicit declaration of function `register_application_hook' afstreams.c:195: error: `AH_POST_DAEMONIZED' undeclared (first use in this function) afstreams.c:195: error: (Each undeclared identifier is reported only once afstreams.c:195: error: for each function it appears in.)
The patch is for syslog-ng 2.1, not for 2.0, it needs further backports. -- Bazsi