Я запущу путем признавания, что я не делаю многого о рабочем материале в облаках - но на основе моего опыта в другом месте, я сказал бы, что эта конфигурация веб-сервера отражает довольно низкий объем трафика. То, что runqueue является столь большим, предполагает, что просто нет достаточного количества ЦП, доступного для контакта с ним. Что еще находится в runqueue?
Мы можем позволять слишком много запросов KeepAlive
Нет - keeplive все еще улучшает производительность, современные браузеры очень умны о знании, когда конвейерно обработать и когда выполнить запросы параллельно, хотя тайм-аут 5 секунд все еще довольно высок, и у Вас есть БОЛЬШОЕ ожидание серверов - если у Вас нет ОГРОМНЫХ проблем задержки, я рекомендовал бы провернуть это вниз к 2-3. Это должно сократить runqueue немного.
Если бы Вы уже не получили mod_deflate, установленный на веб-сервере - затем я рекомендовал бы, чтобы Вы сделали так - и добавили ob_gzhandler () к Вашим Сценариям PHP. Можно сделать это как автопредварительно ожидание:
if(!ob_start("ob_gzhandler")) ob_start();
(да, copression использует больше ЦП - но необходимо сохранить ЦП в целом путем вытаскивания серверов из runqueue быстрее / обрабатывающий меньше пакетов TCP - и в качестве награды, сайт также быстрее).
Я рекомендовал бы установить верхний предел для MaxRequestsPerChild - говорит что-то как 500. Это просто позволяет некоторый оборот на процессах в случае, если у Вас есть утечка памяти где-нибудь. Ваши процессы httpd надеются быть ОГРОМНЫМИ - удостоверяются, что Вы удалили любые апачские модули, в которых Вы не нуждаетесь и удостоверяетесь, что подаете статическое содержание с хорошей информацией о кэшировании.
Если Вы все еще видите проблемы, то проблема, вероятно, в рамках кода PHP (если Вы переключаетесь на использование fastCGI, это должно быть очевидно без любой основной потери производительности).
обновление
Если статическое содержание не варьируется очень через страницы, то с этим могло бы также стоить экспериментировать:
if (count($_COOKIE)) {
header('Connection: close');
}
на Сценариях PHP также.
Оказывается, это произошло из-за того, что домен на NAS и сервере был другим!
hostname -d
на ReadyNAS вернулось пустым, а hostname -d
на сервере Ubuntu вернулся mshome.net
.
Я изменил его с помощью: nano / etc / hosts
и обновил: 127.0.1.1 testserver.mshome. net testserver
на 127.0.1.1 testserver
Перезагрузился с: shutdown -r now
, и все начало работать, как ожидалось (думаю, я, возможно, тоже перемонтировал долю, но не на 100% )!