[syslog-ng] UDP packet loss with syslog-ng
Lars Kellogg-Stedman
lars at oddbit.com
Sat Oct 16 02:43:12 CEST 2010
> Ok, maybe even easier than running tcpdump for DNS would be to just
> swap $FULLHOST_FROM with $SOURCEIP and see if that improves things.
That didn't seem to impact the rate at all.
> Two more things to look at: what is the CPU % when it's running, and
Running with 2000 messages/second, the CPU is usually at least 98%
idle. The CPU display from top looks approximately like the following
throughout the duration of the test:
Cpu(s): 1.1%us, 0.3%sy, 0.0%ni, 98.5%id, 0.0%wa, 0.0%hi, 0.1%si, 0.0%st
So there's not much waiting for i/o, either.
> if you strace it what syscalls does it seem to be doing the most?
> Gettimeofday should be in there quite a bit, but sometimes calls you
> didn't expect jump out and show what's blocking.
Running 'strace -c' against the syslog-ng process yields:
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
47.43 0.008792 0 42984 write
28.85 0.005347 2 2535 poll
12.56 0.002328 0 42984 lseek
11.16 0.002068 0 21975 484 recvfrom
0.00 0.000000 0 1 close
0.00 0.000000 0 11 stat
------ ----------- ----------- --------- --------- ----------------
100.00 0.018535 110490 484 total
The errors are all from recvfrom() reporting EAGAIN. I don't think
anything here is terribly surprising.
> You really shouldn't have to post-process with syslog-ng; there's got
> to be something wrong. I also find your raw socket numbers to be
> lower than I'd expect.
Me too! :) Things are better (but still not perfect) with a 2GB
buffer, but we're only throwing a 4Mbps stream of data at the system,
and I would expect it to handle this without a problem. I remain
puzzled.
More information about the syslog-ng
mailing list