За последние два дня я построил набор серверов Apache. Каждый сервер имеет 4 ГБ памяти и использует режим предварительной развертки. Количество подключений, установленных вначале, было слишком мало, и для ответа на запросы пользователей требовалось много времени. я изменил файл конфигурации Apache 2.0.59 httpd.conf:
Цитировать
# префорк MPM
# StartServers: количество запускаемых серверных процессов
# MinSpareServers: минимальное количество серверных процессов, которые остаются резервными.
# MaxSpareServers: максимальное количество серверных процессов, которые остаются резервными.
# MaxClients: максимальное количество серверных процессов, которые разрешено запускать.
# MaxRequestsPerChild: максимальное количество запросов, которые обслуживает серверный процесс.
СтартСерверов 10
Минспаресерверс 10
Максспаресерверс 15
СерверЛимит 2000
МаксКлиентс 2000
MaxRequestsPerChild 10000
Проверьте количество процессов httpd (то есть количество одновременных запросов, которые Apache может обработать в режиме prefork):
Команда Linux:
Цитировать
ps -ef | grep httpd |
Пример результата возврата:
1388
Указывает, что Apache может обрабатывать 1388 одновременных запросов. Это значение может автоматически корректироваться Apache в зависимости от нагрузки. Пиковое значение каждого сервера в моей группе достигло 2002.
Проверьте количество одновременных запросов Apache и состояние его TCP-соединения:
Команда Linux:
Цитировать
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
(Это утверждение исходит от Я получил его от г-на Ванга, технического директора бизнес-отдела сообщества Sina Interactive, и это очень хорошо)
Пример результата возврата:
ПОСЛЕДНИЙ_ACK 5
SYN_RECV 30
УЧРЕЖДЕНО В 1597 ГОДУ.
ФИН_ОЖИДАНИЕ1 51
ФИН_WAIT2 504
ВРЕМЯ_ОЖИДАНИЕ 1057
SYN_RECV указывает количество запросов, ожидающих обработки; ESTABLISHED указывает на нормальный статус передачи данных; TIME_WAIT указывает количество запросов, которые были обработаны и ожидают окончания тайм-аута.
Что касается изменений в статусе TCP, это наглядно видно на следующем рисунке:

СТАТУС: ОПИСАНИЕ ЗАКРЫТО: соединение не активно или не выполняется. ПРОСЛУШИВАТЬ: Сервер ожидает входящие вызовы. SYN_RECV: поступил запрос на соединение, ожидается подтверждение. SYN_SENT: приложение запустилось, открывается соединение. УСТАНОВЛЕНО: нормальный статус передачи данных FIN_WAIT1: Приложение сообщает, что оно выполнено. FIN_WAIT2: другая сторона согласилась выпустить ITMED_WAIT: дождаться завершения завершения всех пакетов. ЗАКРЫТИЕ: обе стороны пытаются закрыться одновременно. TIME_WAIT: другая сторона инициализировала выпуск. LAST_ACK: дождаться завершения завершения всех пакетов.