Со вчерашнего дня мой сервер 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 и приложения.