Thanks for the pointer. After overriding SQUID_ARGS as proposed, squid seems
to no longer be using syslog. It's my feeling that unless squid is modified
to call syslog in a manner which can't block the main process, the default
SQUID_ARGS should not include "-s".  Since the information is already logged
to cache.log, there is no data lost through making such a change and a
substantial risk is eliminated.

See Debian bugs 205926 and 462581 for more general information on the bad
effects of syslog using blocking IO in a daemon's select() or poll() loop.

As for syslog-ng, unless they're including a non-blocking syslog client
library, it only partially addresss the problem. Syslog-ng's multi-threaded
model would help reduce cases where the syslog daemon might not immediately
process logging requests, but it does not fully eliminate the possibility
that the blocking write called by the standard POSIX syslog() might still
block and hang up the entire squid process until it completes.

One workaround would be to call the syslog function from an external child
process, similar to how older squid versions (or newer versions when
compiled with the --disable-internal-dns option) handled the blocking
gethostbyname function.

-- 
Brian Ristuccia
[EMAIL PROTECTED]



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to