Я использую веб-сервер apache2 2.2.9 с modpython и mpm_worker_module.
Текущая конфигурация mpm:
ServerLimit 32
StartServers 10
MaxClients 800
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
Сервер имеет 1 ГБ оперативной памяти и соединение 100 Мбит.
Проверка netstat -na | grep УСТАНОВЛЕН | wc -l дает мне число от 50 до 60. Загрузка составляет около 1.0. Каждая загрузка страницы также кэшируется memcached.
Я не понимаю, почему сервер так медленно отвечает на новые соединения, иногда полностью их отбрасывая?
Также попытался отключить iptables, чтобы убедиться, что это не из-за полной таблицы состояний или чего-то в этом роде.
Единственное, что в dmesg - это спам на тему "TCP: Treason uncloaked!"
Даже соединения с localhost со статусом apache2ctl не работают, поэтому это не должно быть связано с modpython. Когда статус действительно работает, он показывает около 110-128 обрабатываемых запросов. Примерно половина - это статус C (закрытие соединения), много _ (ожидание соединения), остальные - R и W
Что сообщает error_log? Это лучшее место для начала отладки подобных проблем.
top - также хороший способ отладить это. Запустите top и проверьте, не используют ли процессы Apache слишком много ЦП. Затем введите M, чтобы отсортировать процессы по использованию памяти и проверить, не потребляют ли они слишком много оперативной памяти.
Также проверьте, не меняете ли вы:
free
Memcached работает на том же сервере? Если да, то сколько памяти выделено?
Кроме того, у вас проблемы с ожиданием ввода-вывода? Проверьте значение% wa при запуске наверху.
Что касается сети, у вас есть ошибки или CRC? Проверьте это с помощью netstat:
netstat -i
Взгляните на столбцы RX-ERR, RX-DRP, TX-ERR и TX-DRP. В идеале эти значения должны быть 0.
Надеюсь это поможет.