Я запускаю apache 2.2.9 с предварительным форком mpm на debian lenny. Следующий http://httpd.apache.org/docs/2.2/mod/prefork.html, Я бы ожидал, что есть один родительский процесс, работающий от имени root и прослушивающий в соответствии с настройками, который запускал бы дочерние процессы, как определено параметрами Min / Max / etc. директивы. Я ожидаю, что дети будут перезапущены согласно MaxRequestsPerChild
, но родительский процесс останется с одним идентификатором процесса, пока я не перезапущу его вручную.
Из-за небольшой паранойи я начал отслеживать порты прослушивания, включая идентификаторы процессов. У меня есть задание cron каждые 20 минут для запуска netstat -ap | grep LISTEN
и сравнить вывод. Иногда (примерно раз в день) я вижу серию таких вещей:
8c8
< tcp6 0 0 [::]:www [::]:* LISTEN 6194/apache2
---
tcp6 0 0 [::]:www [::]:* LISTEN 6607/apache2
10c10
< tcp6 0 0 [::]:https [::]:* LISTEN 6194/apache2
---
tcp6 0 0 [::]:https [::]:* LISTEN 6607/apache2
В течение часа или трех родитель будет менять свой pid не реже одного раза в 20 минут без каких-либо объяснений в файлах журнала или каких-либо других намеков на то, что что-то идет не так.
Это не то, чего я ожидал. Что мне не хватает?
Это от logrotate?
cat /etc/logrotate.d/apache2
Взгляни на /var/log/syslog
Кроме того, менее подробный журнал событий находится в /var/log/daemon.log