Уменьшающий апачский VIRT и использование памяти RES

В системах BSD (и я верю большинству других систем), tail -f сбросит к началу файла, если он будет видеть, что файл был усеченным (это походит точно на поведение, которое Вы хотите).

В системах Linux происходит то же самое, но по крайней мере в поле Debian у меня есть наложение вокруг хвоста, имеет "интервал опроса", таким образом, необходимо сказать этому не спать между проверками файла (tail -s 0 -f ...) чтобы это заметило усечение, в других отношениях странные вещи происходят (если файл является тем же размером или меньший, когда это выписано, Вы не получаете вывода, если это больше, Вы получаете все после того, как текущий маркер количества байта хвоста, и т.д. - играют с Вашим хвостом impementation, чтобы видеть, как это ведет себя),


Как альтернатива и на Linux и на системном хвосте BSD имеет a -F опция (который похож -f но проверки, чтобы видеть, был ли файл повернут - т.е. имя, указывают на другое inode число). Это не поможет Вам, если файл будет усеченным в противоположность unlink'd и замененный все же.

1
задан 1 February 2016 в 15:44
4 ответа

Память в Apache используется модулями, а память - модулями. Отключите неиспользуемые модули и чтобы увидеть, какой из оставшихся вам необходимо настроить, используйте pmap , чтобы увидеть, как была распределена память. Используйте dmalloc и valgrind для отладки оставшихся проблем с распределением памяти.

1
ответ дан 4 December 2019 в 01:24

Это необычно много памяти. Возможна утечка памяти .

А пока попробуйте обновить установку Apache2 (включая модули) и уменьшить количество MaxRequestsPerChild , то есть до 500. Последний параметр существенно снижает максимальное время жизни подпроцессов Apache2 с точки зрения «обработанных запросов». То есть, если есть утечки памяти, они не будут увеличиваться так резко.

0
ответ дан 4 December 2019 в 01:24

Удаление ненужных модулей - основное решение проблемы, но вам нужно запустить безумную кучу модулей, чтобы получить процесс Apache, который занимает 2 ГБ ОЗУ. Гораздо более вероятно, что у вас есть модули динамического кода (такие как mod_php ), которые запускают неприятный, негерметичный код, или же модуль, который плохо закодирован и вызывает утечку памяти.

Вы можете удалить ] MaxRequestsPerChild на что-то совсем маленькое, или вы можете выполнить работу правильно и найти утечки памяти. Золотая середина состоит в том, чтобы, по крайней мере, перенести выполнение динамического кода в отдельный процесс (используя suPHP, suexec, php-fpm и т. Д.), Что в любом случае является хорошей идеей в целях безопасности.

0
ответ дан 4 December 2019 в 01:24

Я не знаю, какой тип трафика вы видите, для которого требуются такие настройки, но похоже, что ваши настройки могут быть снижены, чтобы лучше использовать ресурсы, поскольку кажется, что вы чрезмерно загружаете Apache с самого начала и не настроили его для реалистичного трафика сайта. Если вы не можете предоставить некоторую статистику сайта, которая оправдывает большое количество исходной конфигурации.

Ключ - MaxRequestsPerChild , который поможет предотвратить утечку памяти за счет более частого повторного создания родительских процессов. Кроме того, я снизил ServerLimit и MaxClients , так как это связано с тем, сколько клиентов подключается ЗА СЕКУНДУ. Итак, если кто-то берет страницу с вашего сайта, и она отображается за 1 секунду, угадайте, что? Сервер сделал свою работу. В связи с этим я уменьшил MaxKeepAliveRequests и KeepAliveTimeout , чтобы снова было более реалистично. Я также снизил общий Тайм-аут , поскольку 120 секунд составляют 2 минуты. Если клиенту требуется 2 минуты, чтобы получить от вас контент, это более чем достаточно времени, чтобы дать ему время до истечения времени ожидания сервера. Я предпочитаю оставить это число на всякий случай, если возникнет ситуация с высокой посещаемостью.

Помните: Веб-сервер не поддерживает постоянное соединение между сервером и клиентом. Клиент делает запрос, сервер доставляет страницу и все. Так что настраивайтесь с учетом этого. Также, , пожалуйста, прочтите этот другой ответ , который я предоставил другому пользователю, который беспокоился об использовании памяти на своем веб-сервере.

Timeout 120
TraceEnable Off
ServerSignature Off
ServerTokens ProductOnly
FileETag None
StartServers 6

<IfModule prefork.c>
  MinSpareServers 4
  MaxSpareServers 16
</IfModule>

ServerLimit 80
MaxClients 60
MaxRequestsPerChild 2000
KeepAlive On
KeepAliveTimeout 2
MaxKeepAliveRequests 30
0
ответ дан 4 December 2019 в 01:24

Теги

Похожие вопросы