У меня есть сервер, на котором размещен сайт с высоким трафиком, который одновременно обслуживает 800–1400 пользователей. Эти пользователи обычно остаются более 5 минут (учитывая характер сайта, с которого пользователи обычно скачивают большие файлы).
Я заметил, что на сервере каждые 48 часов заканчивается SWAP, но мой сервер использует только 5-11% памяти. Я хотел бы получить совет о том, какие изменения мне следует внести в конфигурацию Apache, чтобы этого не произошло.
Моя конфигурация apache выглядит следующим образом:
keepalive: Off
keepalivetimeout: 5
maxclients: 2500
maxkeepaliverequests: 200
maxrequestsperchild: 10000
maxspareservers: 10
minspareservers: 5
serverlimit: 2600
serversignature: Off
servertokens: Full
startservers: 5
timeout: 300
Характеристики сервера:
Intel XEON E5-1620v2
64 GB DDR3 ECC 1600MHz
2x2000GB
Попробуйте оптимизировать работу, прежде чем рассматривать возможность обновления оборудования.
В противном случае я бы обычно рекомендовал вам включить oom killer, так как он убьет любой процесс, который приближается к потреблению всей оперативной памяти сервера. Конечно, тогда вам понадобится обновленный способ снова перезапустить apache (например, daemontools).
Но перед этим, я полагаю, вы можете изучить установку директивы MaxClients для apache. Это ограничивает количество запросов, которые apache будет обслуживать за раз и ставить в очередь остальные. Для prefork это ограничивает количество дочерних процессов. Для worker это ограничивает количество потоков, доступных для обслуживания запросов.
«Maxclients $ number» - это синтаксис, и вы можете поэкспериментировать с числом MaxClients, чтобы увидеть, насколько высоко вы можете его установить, не потребляя слишком много ресурсов сервера.
Конечно, этот совет основан на предположении, что вы уже определили apache как причину проблемы с памятью.
Отключите своп полностью, так как его использование, вероятно, только ухудшает ситуацию.
Резать maxrequestsperchild
и maxclients
спуск. Начните с того, что срежьте с конца ноль и посмотрите, как это получится. Оттуда вы можете захотеть разрезать их пополам несколько раз.
Реализуйте oom killer.