У меня есть виртуальная машина openSUSE 13.1 (на хосте работает Virtualbox 4.2.18, также на openSUSE 13.1), и перезапуск httpd (Apache / 2.4.6) всегда занимает 1,5 минуты:
foobar:~ # time /etc/init.d/apache2 restart
redirecting to systemctl restart apache2.service
real 1m30.778s
user 0m0.004s
sys 0m0.000s
Немедленный последующий перезапуск нормальный (очень быстрый):
foobar:~ # time /etc/init.d/apache2 restart
redirecting to systemctl restart apache2.service
real 0m1.023s
user 0m0.004s
sys 0m0.000s
Через 5 минут время перезапуска снова становится равным 90 секундам:
foobar:/tmp # time /etc/init.d/apache2 restart
redirecting to systemctl restart apache2.service
real 1m30.684s
user 0m0.000s
sys 0m0.000s
Что я искал до сих пор:
top
при перезапуске apache мало что показывает (использование ~ 0%).netstat
также не показывает никаких связей с внешним миром.Обратите внимание, что это виртуальная машина, которая в настоящее время имеет нулевой трафик, а в памяти и на диске имеется много свободных ГБ.
Я также обнаружил, что именно «стоп» части «перезапуска» занимает 90 секунд.
Есть идеи, почему это происходит или где мне посмотреть дальше?
редактировать: Я узнал, что когда stop
занимает 90 секунд, я постоянно получаю следующее в /var/log/apache2/error_log
:
[core:notice] [pid 3179] AH00052: child pid 3203 exit signal Segmentation fault (11)
То же самое происходило со мной, и оказалось, что я оставил файл / etc / hosts с настройками по умолчанию.
Задержка исчезла сразу после того, как я обновил файл hosts, подобный этому:
127.0.0.1 localhost
::1 localhost
172.16.333.444 www.mysite.com mysite.com
Ссылки:
/ etc / hosts запись для одного IP-сервера, обслуживающего несколько доменов
https://unix.stackexchange.com/questions/57439/slow-start-of-midnight-commander#answer-397879
После долгих проб и ошибок я обнаружил, что это вызвано php5
модуль, который загружается в /etc/sysconfig/apache2
. Его удаление полностью остановило это поведение.
мне нужно php5
модуль, поэтому, чтобы уменьшить эту задержку, я добавил следующее в etc/apache2/server-tuning.conf
:
GracefulShutdownTimeout 2
Теперь, когда происходит segfault при остановке apache, он зависает только на 2 секунды.