I run an Apache/PHP server and sometimes a httpd process gets stuck due to external libraries. I use killall from psmisc-22.20 to kill them. I use the command line:
killall -v -q -uapache --older-than 2h httpd
It is set up in a cron job that runs every minute. It works fine most of the time, but sometimes it kills processes that had just been created. I know that because I also save the apache status page every minute.
I attached, as an example, three status pages from Apache around the time the newly created process was killed.
The first status page is from 8:18. Process 17958 wasn't created yet.
The second one is from 8:19. Process 17958 is there waiting for connections.
The third one is from 8:20. Process 17958 is gone.
Around that time, I got an email from Cron Daemon saying:
Killed httpd(17958) with signal 15
The process was obviously not over 2h old so killall shouldn't have killed it.
I think this happens when a process is just being created or just being terminated by Apache. killall fails to probe the right age if the process is being born or dying.
The Apache server is set up so that each process only serves one request. So processes are created and killed by Apache all the time.
I use CentOS 6.4 x64.