апачский веб-сервер, безразличный с состоянием сервера, показывающим все дочерние процессы, ожидающие соединения

Если "помещенными базами данных в RAM" Вы обращаетесь к своему предыдущему вопросу о псевдодисках на Windows Server 2008, ответ является снова тем же: SQL Server имеет превосходное кэширование, Вы не должны смешивать с псевдодисками.

9
задан 26 December 2014 в 08:00
4 ответа

Показать ваши настройки apache MPM и настройки keepalive.

Вероятно, это плохая комбинация этих параметров.

РЕДАКТИРОВАТЬ: Я только что видел, как вы упомянули php.

Если вы используете именно mod_php, на этой машине лучше иметь 64 ГБ памяти, иначе вы никогда не сможете поддерживать 2500 подключений.

0
ответ дан 2 December 2019 в 22:37

Также имейте в виду, что в MPM prefork каждый процесс будет иметь PHP в своей области памяти (каковы его настройки ограничения памяти?). Вы можете попробовать переключиться на рабочий MPM, для чего может потребоваться немного другой модуль PHP.

Также стоит удаленно избавиться от посторонних модулей в конфигурации Apache.

По моему опыту, такие вещи запускаются такими вещами, как сканер поисковой системы или такие вещи, как конфликты ARP. Или уровни трафика в какой-то связанной части сети.

Вы можете найти sar полезным ... не самым дружелюбным, но определенно полезным.

Возможно, также связаны. Sar может сказать вам (если вы настроите его для записи активности диска), каково среднее время ожидания io. Вы также можете посмотреть время ожидания ввода-вывода в верхней части (это процент, прочитайте, что это на самом деле означает). Это может иметь большое значение, если вы используете SAN или виртуальную среду.

0
ответ дан 2 December 2019 в 22:37

Сначала: проверьте Максимальное количество открытых файлов для процесса. Активное соединение сокета считается открытым файлом. cat / proc / ### / limits - хороший способ проверить эффективное значение для другого процесса. Вы можете получить список открытых файлов с помощью lsof -p ### , где ### - идентификатор процесса вашего веб-сервера. Вы можете сравнить lsof -p ### | wc -l , чтобы увидеть, насколько близко вы приближаетесь к пределу. Вы также должны видеть сообщения в error_log apache, если вы достигли предела.

Вам нужен дескриптор файла для каждого соединения с сокетом, а также для каждого cgi-скрипта или ссылки на файл данных. Для 920 MaxClients необходимо настроить не менее 4000 файлов для процесса httpd. Вы можете увеличить количество файлов, добавив файл в /etc/security/limits.d/ со следующим содержимым. Убедитесь, что имя пользователя соответствует тому, что вы используете для своего веб-сервера.

apache soft nofile 10000
apache hard nofile 10000

Во-вторых: если ваша проблема исчерпана,вы можете настроить некоторые параметры IP в /etc/sysctl.conf. (Начиная с net.ipv4.tcp_fin_timeout ). Обычно это проблема только при большом количестве очень мелких соединений. Многие сокеты TIME_WAIT являются одним из индикаторов этого, но это указывает на исчерпание порта только тогда, когда они сопровождаются ошибками в системном журнале о возможном переполнении SYN и отправке файлов cookie . Вы также должны убедиться, что ваш сервер защищен брандмауэром, который может предотвратить вредоносные атаки SYN. ​​

1
ответ дан 2 December 2019 в 22:37

Вы должны включить расширенный статус mod_status ( http://httpd.apache.org/docs/2.2/mod/mod_status.html#extendedstatus ), чтобы отслеживать текущие хосты и обрабатываемые запросы. Я думаю, что есть скрипт (ы) / страница (ы), который требует слишком много времени для освобождения соединения и заставляет соединения складываться в стек.

2
ответ дан 2 December 2019 в 22:37

Теги

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