Сервер Apache порождает все больше процессов, истратив RAM и смерть

Использовал бы его, использовали его, рекомендовал бы это.

У меня был жесткий диск с интерфейсом SATA на 160 ГБ, полный рисунков Solidworks на нем. Однажды перебой в питании удалил эту машину. Впоследствии машина была бы только bluescreen во время начальной загрузки.

Наконец мы купили SpinRite после попытки ChkDsk и простые утилиты производителя. SpinRite нашел и закрепил те ошибки на диске. Все данные были восстанавливаемыми после этого.

Если Ваш жесткий диск является тостом, и если Ваши данные стоят больше, чем стоимость нового диска, это стоит покупки $89.

1
задан 23 September 2011 в 21:09
3 ответа

В Вашем httpd.conf файл, Вам, вероятно, прокомментируют раздел, который выглядит подобным:

<IfModule mod_status.c>
        <Location "/server-status">
                SetHandler server-status
                Order deny,allow
                Deny from all
                Allow from 127.0.0.1
        </Location>
        ExtendedStatus On
</IfModule>

В рассмотрении одного из моих серверов это имело проблему w/загрузка, становящаяся слишком высоким, я вижу подобную проблему... строки 'SS' никогда не должны получать тот высоко:

Srv   PID    Acc       M  CPU   SS       ...  Request

0-0   22830  1/9/3640  K  2.36  7        ...  GET /[].css HTTP/1.1
1-0   79114  0/0/858   W  0.00  121462   ...  POST /cgi/[] HTTP/1.1
2-0   22856  0/1/3211  W  0.00  20       ...  POST /cgi/[] HTTP/1.1
3-0   22890  0/0/2697  W  0.00  0        ...  GET /server-status HTTP/1.0
4-0   79105  0/5/525   W  0.34  121463   ...  POST /cgi/[] HTTP/1.1
5-0   22892  1/1/764   K  0.00  6        ...  GET /[].js HTTP/1.1
6-0   22893  1/1/449   K  0.00  5        ...  GET /[].js HTTP/1.1
7-0   22894  1/1/57    K  0.00  5        ...  GET /[].js HTTP/1.1
8-0   22895  1/1/426   K  0.00  4        ...  GET /[].js HTTP/1.1
9-0   -      0/0/40    .  0.00  2        ...  OPTIONS * HTTP/1.0
10-0  22897  0/0/16    _  0.00  4        ...  OPTIONS * HTTP/1.0
11-0  22898  0/0/8     _  0.00  4        ...  OPTIONS * HTTP/1.0

(Вы, возможно, должны были бы прокрутить вниз, чтобы видеть, что таблица - верхние таблицы будут полной статистикой сервера и затем визуализацией того, что каждый из детей в настоящее время делает),

обновление: конечно, это предполагает, что что-то идет не так, как надо. (на основе Вашего комментария только 10-15 запросов в секунду). У меня есть некоторые другие серверы, где люди зеркально отражают файлы от нас, и поскольку файлы являются довольно большими, и существует несколько человек, которые, как было известно, открыли 500 потоков с не так большая пропускная способность, она съест все 1 024 соединения, но это совершенно нормально и не вызывает катастрофический отказ.

Если у Вас есть проблемы с безудержным CGIs, Вы могли бы рассмотреть использование suExec или CGIwrap для ограничения времени выполнения, хотя будут издержки для использования их.

2
ответ дан 3 December 2019 в 16:23

Достаточно ли у вас пропускной способности интернета для сервера ответов? Входящие запросы пропорционально очень малы, поэтому, если вы исчерпываете любую ветку (LAN, WAN, что угодно), ваши серверы накапливаются, пытаясь писать в сеть.

Проверьте очередь отправки через вашу систему ' s команда netstat (1). например, "netstat -nat" и посмотрите на столбец отправки Q. Если у вас много исходящих данных в очереди, это признак того, что у вас есть узкое место в сети (за пределами вашей физической сетевой карты).

0
ответ дан 3 December 2019 в 16:23

[ Для тех, кто наткнулся на этот старый вопрос ...]

Быстрый ответ:

Проверьте настройки KeepAlive в вашем файле apache2.conf или httpd.conf. Установите KeepAliveTimeout между 2–5 секундами.

Подробности:

Я обнаружил, что по умолчанию Apache KeepAlive имеет значение на и ] KeepAliveTimeout установлен на 15 секунд. Это будет означать, что обращение к странице одного пользователя заставит сервер ждать, пока тот же пользователь запросит другую страницу / ресурс в течение 15 секунд, прежде чем он откажется и обработает чей-то запрос.

Эта настройка ОЧЕНЬ полезна, когда пользователь запрашивает исходный файл index.html, а затем через секунду или две запрашивает связанные файлы CSS, javascript и изображения. Однако современные компьютеры и сетевые / интернет-соединения означают, что браузер обычно запрашивает связанные ресурсы менее чем за 2 секунды. Apache будет обслуживать эти последующие страницы, а затем ждать еще 15 секунд, если этому пользователю нужно что-то еще. Это крайне неэффективно в среде с высоким трафиком.

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

Я видел ряд предложений по настройке KeepAliveTimeout где-то между 2 и 5 секундами. Я, я

7
ответ дан 3 December 2019 в 16:23

Теги

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