Hi all, On a busy-ish site, I found that slowcgi is doing quite excessive logging: every single environment variable is logged on a separate logline. There's at least 17 variables per hit, but I've seen it go up to 35. If you're writing debug logs from syslog, that adds up rather quickly. Of course you can argue "don't do that", but why have the system do all this work of sending stuff through syslog when you're not going to anything with it anyway?
Anyway, after a hint from Florian, I added a -v flag to slowcgi to only log syslog events at the DEBUG level when it's given and not always / by default. It's good to be able to log these when you're debugging issues, but then you'll have to add '-v' to the slowcgi_flags in /etc/rc.conf.local using rcctl(8). I've tested this on that busy-ish setup - works for me (tm). Cheers, Paul 'WEiRD' de Weerd Index: slowcgi.8 =================================================================== RCS file: /home/OpenBSD/cvs/src/usr.sbin/slowcgi/slowcgi.8,v retrieving revision 1.14 diff -u -p -r1.14 slowcgi.8 --- slowcgi.8 13 Aug 2018 16:54:50 -0000 1.14 +++ slowcgi.8 31 Aug 2021 13:10:42 -0000 @@ -27,6 +27,7 @@ .Op Fl s Ar socket .Op Fl U Ar user .Op Fl u Ar user +.Op Fl v .Sh DESCRIPTION .Nm is a server which implements the FastCGI Protocol to execute CGI scripts. @@ -90,6 +91,8 @@ instead of default user www and to the home directory of .Ar user . +.It Fl v +Enable more verbose (debug) logging. .El .Sh SEE ALSO .Xr httpd 8 Index: slowcgi.c =================================================================== RCS file: /home/OpenBSD/cvs/src/usr.sbin/slowcgi/slowcgi.c,v retrieving revision 1.60 diff -u -p -r1.60 slowcgi.c --- slowcgi.c 20 Apr 2021 07:35:42 -0000 1.60 +++ slowcgi.c 31 Aug 2021 13:08:37 -0000 @@ -260,6 +260,7 @@ usage(void) struct timeval timeout = { TIMEOUT_DEFAULT, 0 }; struct slowcgi_proc slowcgi_proc; int debug = 0; +int verbose = 0; int on = 1; char *fcgi_socket = "/var/www/run/slowcgi.sock"; @@ -292,7 +293,7 @@ main(int argc, char *argv[]) } } - while ((c = getopt(argc, argv, "dp:s:U:u:")) != -1) { + while ((c = getopt(argc, argv, "dp:s:U:u:v")) != -1) { switch (c) { case 'd': debug++; @@ -309,6 +310,9 @@ main(int argc, char *argv[]) case 'u': slowcgi_user = optarg; break; + case 'v': + verbose++; + break; default: usage(); /* NOTREACHED */ @@ -1261,9 +1265,10 @@ syslog_info(const char *fmt, ...) void syslog_debug(const char *fmt, ...) { - va_list ap; - - va_start(ap, fmt); - vsyslog(LOG_DEBUG, fmt, ap); - va_end(ap); + if (verbose > 0) { + va_list ap; + va_start(ap, fmt); + vsyslog(LOG_DEBUG, fmt, ap); + va_end(ap); + } } -- >++++++++[<++++++++++>-]<+++++++.>+++[<------>-]<.>+++[<+ +++++++++++>-]<.>++[<------------>-]<+.--------------.[-] http://www.weirdnet.nl/