I have a system that uses a web server (Apache) to allow non-technical users to start long-running jobs on our systems using a browser. The system starts the job and returns info that allows the browser to poll a JSON file that the long-running job maintains to give the user status info about the job (simplified description.)
But I determined that if Apache restarts on that server, it kills that process. I had done this about 10 years ago and it worked without doing this.
I tried to detach the process by forking, and I also tried to have catch SIGTERM. As a result, Apache restart takes over a minute because something in the server (or apachctl I’m not sure) tries a number of time to send that process a SIGTERM (which it ignores) and then just sends it a SIGKILL.
Here’s what syslog shows:
Jan 13 04:09:57 wcmdev systemd[1]: apache2.service: State 'stop-final-sigterm' timed out. Killing.
Jan 13 04:09:57 wcmdev systemd[1]: apache2.service: Killing process 113975 (php) with signal SIGKILL.
Jan 13 04:09:57 wcmdev systemd[1]: apache2.service: Failed with result 'timeout'.
Jan 13 04:09:57 wcmdev systemd[1]: Stopped The Apache HTTP Server.
Jan 13 04:09:57 wcmdev systemd[1]: apache2.service: Found left-over process 113975 (php) in control group while starting unit. Ignoring.
Jan 13 04:09:57 wcmdev systemd[1]: This usually indicates unclean termination of a previous run, or service implementation deficiencies.
Jan 13 04:09:57 wcmdev systemd[1]: Starting The Apache HTTP Server...
Here’s what the long running process looks like. Note that the PPID is 1, so it is detached.
root@wcmdev:/var/www/wcm# ps -f -p 110733
UID PID PPID C STIME TTY TIME CMD
www-data 110733 1 0 02:58 ? 00:00:00 php /media/sf_Shared/wcm/src/business/api/system/../../../jobs/daemon/testDaemon.php --id=3852114
I search the list for stop-final-sigterm, and could not find anything.
root@wcmdev:/var/www/wcm# /usr/sbin/apache2 -v
Server version: Apache/2.4.41 (Ubuntu)
Server built: 2020-08-12T19:46:17
root@wcmdev:/var/www/wcm# uname -a
Linux wcmdev 5.4.0-48-generic #52-Ubuntu SMP Thu Sep 10 10:58:49 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux