Package: apache2
Version: 2.4.57-2
Severity: normal

Dear Maintainer,

we are experiencing that the Apache httpd locks up, filling the error.log with errors after the nightly maintenance (not every night, though):

  [Wed Nov 29 00:00:01.922731 2023] [mpm_event:notice] [pid 62346:tid 
139841215223680] AH00489: Apache/2.4.57 (Debian) mod_wsgi/4.9.4 Python/3.11 
configured -- resuming normal operations
  [Wed Nov 29 00:00:01.922790 2023] [core:notice] [pid 62346:tid 
139841215223680] AH00094: Command line: '/usr/sbin/apache2'
  [Wed Nov 29 00:00:03.924683 2023] [mpm_event:error] [pid 62346:tid 
139841215223680] AH03490: scoreboard is full, not at MaxRequestWorkers.Increase 
ServerLimit.
  [Wed Nov 29 00:00:04.925780 2023] [mpm_event:error] [pid 62346:tid 
139841215223680] AH03490: scoreboard is full, not at MaxRequestWorkers.Increase 
ServerLimit.

(etc)

I set up a nightly job to mail me the output of "apachectl status", and this is the contents reported at Nov 29 00:00:00, i.e. just before the nightly maintenance:

                  Apache Server Status for localhost (via ::1)

   Server Version: Apache/2.4.57 (Debian) mod_wsgi/4.9.4 Python/3.11
   Server MPM: event
   Server Built: 2023-04-13T03:26:51
     __________________________________________________________________

   Current Time: Wednesday, 29-Nov-2023 00:00:01 CET
   Restart Time: Tuesday, 21-Nov-2023 08:51:55 CET
   Parent Server Config. Generation: 8
   Parent Server MPM Generation: 7
   Server uptime: 7 days 15 hours 8 minutes 6 seconds
   Server load: 0.01 0.02 0.00
   Total accesses: 34860 - Total Traffic: 717.8 MB - Total Duration:
          2289464

   CPU Usage: u297.08 s30.61 cu.01 cs.07 - .0497% CPU load
   .0529 requests/sec - 1141 B/second - 21.1 kB/request - 65.676
          ms/request

   2 requests currently being processed, 48 idle workers

   Slot PID Stopping Connections Threads Async connections
   total accepting busy idle writing keep-alive closing
   0 62348 yes (old gen) 0 no 0 0 0 0 0
   1 62350 yes (old gen) 0 no 0 0 0 0 0
   2 66497 yes (old gen) 0 no 0 0 0 0 0
   3 66498 yes (old gen) 0 no 0 0 0 0 0
   4 73089 yes (old gen) 0 no 0 0 0 0 0
   5 73090 yes (old gen) 0 no 0 0 0 0 0
   6 79644 yes (old gen) 0 no 0 0 0 0 0
   7 79645 yes (old gen) 0 no 0 0 0 0 0
   8 86126 yes (old gen) 0 no 0 0 0 0 0
   9 86127 yes (old gen) 0 no 0 0 0 0 0
   10 92669 yes (old gen) 0 no 0 0 0 0 0
   11 92670 yes (old gen) 0 no 0 0 0 0 0
   12 99203 yes (old gen) 0 no 0 0 0 0 0
   13 99204 yes (old gen) 0 no 0 0 0 0 0
   14 105761 no 0 yes 0 25 0 0 0
   15 105762 no 0 yes 2 23 0 0 0
   Sum 16 14 0   2 48 0 0 0

................................................................
................................................................
......................_____________________________________W____
____W___

   Scoreboard Key:
   "_" Waiting for Connection, "S" Starting up, "R" Reading Request,
   "W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
   "C" Closing connection, "L" Logging, "G" Gracefully finishing,
   "I" Idle cleanup of worker, "." Open slot with no current process
'/usr/bin/lynx -dump http://localhost:80/server-status' failed.
Maybe you need to install a package providing www-browser or you
need to adjust the APACHE_LYNX variable in /etc/apache2/envvars


The server is fairly lightly loaded, running Trac 1.6.

While looking for information on the subject, I found this thread on Reddit, noting the exact same problem, also being tied to the nightly maintenance:

  https://www.reddit.com/r/debian/comments/15stmn7

Weird thing is, it happens right after a reload of apache that happens at midnight. So it's not a case of heavy usage (this site is barely used at all during the day, never mind at night). In fact there were no accesses between the time it reloaded the service and the error started.

-- Package-specific info:

-- System Information:
Debian Release: 12.2
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable-security'), (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 6.1.0-13-amd64 (SMP w/2 CPU threads; PREEMPT)
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages apache2 depends on:
ii  apache2-bin                2.4.57-2
ii  apache2-data               2.4.57-2
ii  apache2-utils              2.4.57-2
ii  init-system-helpers        1.65.2
ii  lsb-base                   11.6
ii  media-types                10.0.0
ii  perl                       5.36.0-7
ii  procps                     2:4.0.2-3
ii  sysvinit-utils [lsb-base]  3.06-4

Versions of packages apache2 recommends:
ii  ssl-cert  1.1.2

Versions of packages apache2 suggests:
pn  apache2-doc                                      <none>
pn  apache2-suexec-pristine | apache2-suexec-custom  <none>
ii  lynx [www-browser]                               2.9.0dev.12-1

Versions of packages apache2-bin depends on:
ii  libapr1                  1.7.2-3
ii  libaprutil1              1.6.3-1
ii  libaprutil1-dbd-sqlite3  1.6.3-1
ii  libaprutil1-ldap         1.6.3-1
ii  libbrotli1               1.0.9-2+b6
ii  libc6                    2.36-9+deb12u3
ii  libcrypt1                1:4.4.33-2
ii  libcurl4                 7.88.1-10+deb12u4
ii  libjansson4              2.14-2
ii  libldap-2.5-0            2.5.13+dfsg-5
ii  liblua5.3-0              5.3.6-2
ii  libnghttp2-14            1.52.0-1
ii  libpcre2-8-0             10.42-1
ii  libssl3                  3.0.11-1~deb12u2
ii  libxml2                  2.9.14+dfsg-1.3~deb12u1
ii  perl                     5.36.0-7
ii  zlib1g                   1:1.2.13.dfsg-1

Versions of packages apache2-bin suggests:
pn  apache2-doc                                      <none>
pn  apache2-suexec-pristine | apache2-suexec-custom  <none>
ii  lynx [www-browser]                               2.9.0dev.12-1

Versions of packages apache2 is related to:
ii  apache2      2.4.57-2
ii  apache2-bin  2.4.57-2

-- Configuration Files:
/etc/apache2/envvars changed:
unset HOME
if [ "${APACHE_CONFDIR##/etc/apache2-}" != "${APACHE_CONFDIR}" ] ; then
        SUFFIX="-${APACHE_CONFDIR##/etc/apache2-}"
else
        SUFFIX=
fi
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
export APACHE_PID_FILE=/var/run/apache2$SUFFIX/apache2.pid
export APACHE_RUN_DIR=/var/run/apache2$SUFFIX
export APACHE_LOCK_DIR=/var/lock/apache2$SUFFIX
export APACHE_LOG_DIR=/var/log/apache2$SUFFIX
export LANG=C
export LANG
export APACHE_LYNX='/usr/bin/lynx -dump'

/etc/apache2/mods-available/status.conf changed:
<Location /server-status>
        SetHandler server-status
        Require local
        Require ip 10.0.28.0/22
</Location>
ExtendedStatus On
<IfModule mod_proxy.c>
        # Show Proxy LoadBalancer status in mod_status
        ProxyStatus On
</IfModule>

/etc/apache2/sites-available/000-default.conf changed:
<VirtualHost *:80>
        # The ServerName directive sets the request scheme, hostname and port 
that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        ServerName trac.dev.btech
        ServerAlias trac
        ServerAlias 10.0.31.152
        ServerAdmin REDACTED
        DocumentRoot /var/www/htdocs
        WSGIScriptAlias /trac /var/www/cgi-bin/trac.wsgi
        RedirectMatch ^/$ http://trac.dev.btech/trac/
        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log vhost_combined
        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf
        <Location /trac/login>
                AuthType Basic
                AuthName "trac"
                AuthBasicProvider external
                AuthExternal pwauth
                Require valid-user
        </Location>
        AddExternalAuth pwauth /usr/sbin/pwauth
        SetExternalAuthMethod pwauth pipe
</VirtualHost>


-- no debconf information

Reply via email to