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/                 

Reply via email to