LiteSpeed Kills Apps Using Recycled PIDs
A small pid_max
value may cause applications to be accidentally killed when they are using a recycled PID.
Example
This log shows that LiteSpeed killed MySQL:
[Wed Mar 20 04:11:42 2019] SIGTERM to mysqld (12289) by litespeed (6133),0,99 <- systemd (1),0,0 [Wed Mar 20 04:11:49 2019] SIGTERM to mysqld (12289) by mysqld (12289),994,991 <- mysqld_safe (12121),0,0 <- systemd (1),0,0
If you check /proc/sys/kernel/pid_max
you may find kernel.pid_max = 32768
.
32768
is too small for some situations, particularly where PIDs are used up very fast and recycled quickly. For example, LiteSpeed may try to kill an unused lsphp process, but that PID may already have been recycled and reused as a MySQL (or other application) PID. When LiteSpeed kills the process, MySQL is killed unintentionally.
Solution
Increase pid_max
from 32768
to a larger number, such as 1048576
, like so:
sysctl kernel.pid_max kernel.pid_max = 32768 sysctl -w kernel.pid_max=1048576 kernel.pid_max = 1048576
NOTE:Sometimes the CRIU feature may cause similar trouble when it resets the PID to restore a process. This causes the PID to be reused too quickly, and can be a problem even with a large pid_max
setting.