У меня проблема с сервером apache на Debian VPS. Через некоторое время (несколько часов) работы он зависает, и запрос не обрабатывается (сервер разрешает соединение, но ничего не возвращает).
# apache2 -v
Server version: Apache/2.2.22 (Debian)
Server built: Dec 23 2014 22:48:29
# apache2 -l
Compiled in modules:
core.c
mod_log_config.c
mod_logio.c
mod_version.c
prefork.c
http_core.c
mod_so.c
<IfModule mpm_prefork_module>
StartServers 1
MinSpareServers 1
MaxSpareServers 19
MaxClients 19
MaxRequestsPerChild 20
</IfModule>
Эта конфигурация после некоторых тестов показала, что низкий MaxRequestsPerChild помог, но нет, сервер все еще зависает.
Когда сервер завис, он застрял в poll
системный вызов:
# strace -p 30145
Process 30145 attached - interrupt to quit
restart_syscall(<... resuming interrupted call ...>) = 0
poll([{fd=25, events=POLLIN|POLLPRI|POLLERR|POLLHUP}], 1, 0) = 0 (Timeout)
poll([{fd=25, events=POLLIN|POLLERR|POLLHUP}], 1, 10000
[......]
и это продолжается. Эта обратная трассировка получается из gdb:
#0 0x00007eff42499d13 in poll () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007eff3f35bf50 in ?? () from /usr/lib/apache2/modules/libphp5.so
#2 0x00007eff3f16a5b2 in ?? () from /usr/lib/apache2/modules/libphp5.so
#3 0x00007eff3f34fa65 in _php_stream_fill_read_buffer () from /usr/lib/apache2/modules/libphp5.so
#4 0x00007eff3f34fba7 in _php_stream_read () from /usr/lib/apache2/modules/libphp5.so
#5 0x00007eff3f2cc14a in zif_fread () from /usr/lib/apache2/modules/libphp5.so
#6 0x00007eff3f4411c1 in ?? () from /usr/lib/apache2/modules/libphp5.so
#7 0x00007eff3f3fab77 in execute () from /usr/lib/apache2/modules/libphp5.so
#8 0x00007eff3f399a1c in zend_execute_scripts () from /usr/lib/apache2/modules/libphp5.so
#9 0x00007eff3f339393 in php_execute_script () from /usr/lib/apache2/modules/libphp5.so
#10 0x00007eff3f4438ba in ?? () from /usr/lib/apache2/modules/libphp5.so
#11 0x00007eff4326bdc0 in ap_run_handler ()
#12 0x00007eff4326c20b in ap_invoke_handler ()
#13 0x00007eff4327c448 in ap_process_request ()
#14 0x00007eff432792c8 in ?? ()
#15 0x00007eff43272780 in ap_run_process_connection ()
#16 0x00007eff432811ee in ?? ()
#17 0x00007eff43281942 in ?? ()
#18 0x00007eff432824a6 in ap_mpm_run ()
#19 0x00007eff432568e6 in main ()
Похоже, он застрял в PHP:
# php -v
PHP 5.4.36-0+deb7u3 (cli) (built: Jan 9 2015 08:07:06)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
Любые намеки на то, что происходит? Конфигурация и код в основном не изменились, были применены только обновления пакетов и Wordpress (на этом сайте работает несколько небольших экземпляров Wordpress и статических сайтов. Использование памяти составляет около 800 МБ, когда VPS с 1 ГБ ОЗУ. ЦП простаивает ...