Назад | Перейти на главную страницу

Отладка нестабильного сервера Apache под Debian

Со вчерашнего дня мой сервер Apache, работающий на машине Debian, работает очень нестабильно. Иногда мои сайты загружаются, а иногда нет. Я думаю, что это связано с памятью, так как мой журнал Apache заполнен нехваткой памяти (выделено 262144) (попытался выделить 4480 байт). Также прикрепил скриншот графика памяти.

Перезапуск сервера временно решает проблему. Я посмотрел на процессы, которые используют память, но самый большой из них - MySQL с 6.5%.

Где еще искать проблему?

Изменить: я сделал бесплатный -m сразу после перезагрузки и примерно через 2 часа. Думаю, тенденция заметна:

root@xxx:~# free -m
             total       used       free     shared    buffers     cached
Mem:          4016        731       3284          0         80        200
-/+ buffers/cache:        449       3566
Swap:          459          0        459

root@xxx:~# free -m
             total       used       free     shared    buffers     cached
Mem:          4016       2466       1550          0         92        473
-/+ buffers/cache:       1900       2115
Swap:          459          0        459

У вас, вероятно, работает много-много процессов apache. Выпустить ps ax | grep apache2 | wc -l чтобы увидеть сколько.

Если ваш KeepAliveTimeout слишком большой (как по умолчанию), кто-то может подключиться к вам, позволить подключению задержаться и съесть все ваши ресурсы.

Я обычно использую KeepAliveTimeout 5, поэтому, когда nothign вернется через 5 секунд, Apache может разорвать соединение.

Проверить MaxConnectionsPerChild слишком. Если они неограниченны, утечка памяти съест всю вашу память. Используйте что-нибудь приятное, например 10000 или 50000.

Также обратите внимание на загруженные модули. У вас может быть несколько неиспользуемых модулей, и они занимают немного памяти для каждого экземпляра процесса. Сумма хоть и небольшая, но суммируется очень быстро.

Наконец, взгляните на свои журналы. Посмотри, нет ли чего-нибудь странного в журналах. Вы можете обнаружить, что ваш сервер подвергается атаке, или кто-то установил неисправную библиотеку, или что-то подобное.

Причина проблемы - большая очередь почты. Удаление очереди решило проблему.

Пожалуйста, проверьте параметр MaxRequestsPerChild, если он равен 0, попробуйте изменить его на значение больше, чем 1000 (зависит от трафика). Информация о нехватке памяти предполагает, что вы используете PHP, проверьте значения memory_limit и max_execution_time в вашем php.ini, возможно, вам следует увеличить / уменьшить время / память. Пожалуйста, предоставьте дополнительную информацию о конфигурации Apache / PHP и приложения.