У меня на сайте интенсивный трафик, много динамического контента, в основном пользовательского.
Сервер является выделенным и имеет в общей сложности 4 процессора Intel Xeon® X3210 с тактовой частотой 2,13 ГГц. Мне нужно знать оптимальные значения для директив apache ServerLimit и MaxClients, учитывая, что сервер имеет 4 ГБ ОЗУ, а база данных MySQL работает на отдельном сервере. Панель DirectAdmin с CentOS.
Ниже приведены мои текущие директивы, но в часы пик с более чем 5 тыс. Пользователей замечено важное отставание - и это не полная ошибка MySQL, потому что кажется, что страницы генерируются быстро (я реализовал счетчик времени генерации страниц), но есть длинный задержка соединения до тех пор, пока страница не начнет отвечать и не будет отправлена в браузер.
<IfModule prefork.c>
StartServers 800
MinSpareServers 20
MaxSpareServers 60
ServerLimit 900
MaxClients 900
MaxRequestsPerChild 2000
</IfModule>
Timeout 90
KeepAlive On
KeepAliveTimeout 5
Следует отметить, что при мониторинге сервера с помощью команды top загрузка ЦП никогда не превышает 20–30% в час пик. В то время сервер MySQL также использовал от 30 до 50%, и я постоянно работаю над исправлением медленных запросов, но это другая проблема. Я знаю, что это не узкое место БД, потому что статические страницы также загружаются в часы пик.
Любые советы по оптимизации этих значений будут с благодарностью, спасибо.
источник
Вам необходимо получить средний размер вашего процесса Apache. С помощью этого числа и общего объема вашей оперативной памяти вы можете рассчитать директиву MaxClients. Помните: «Веб-серверу никогда не придется менять местами» ( Apache Performance Tuning )
Мониторинг с помощью top или htop - это нормально, но вам нужно лучше просматривать всю статистику ваших серверов (процессор, ram, дисковый ввод-вывод, запросы apache, медленные запросы mysql и т. Д.) С помощью некоторого инструмента мониторинга, такого как ganglia или munin, чтобы найти возможные узкие места.
источник
Я рекомендую поиграть с Apache's Benchmark (AB). Вы можете поиграться со значениями, чтобы сопоставить их с вашим трафиком и посмотреть, какие ответы вы получаете, а также среднее время загрузки и тому подобное. В этот момент вы можете поиграть с настройками, о которых вы говорите, чтобы попытаться оптимизировать их. С помощью ab вы сможете определить оптимальную производительность для каждой настройки производительности.
Мне было бы не очень разумно говорить о ваших настройках, однако вам также необходимо учитывать вашу оперативную память, потому что, похоже, вы израсходовали много оперативной памяти с этими настройками. Хотя это просто домыслы без каких-либо данных. htop дает вам хорошее визуальное чтение ваших ресурсов.
Также ваша средняя нагрузка может многое сказать. Я сомневаюсь, что ваше использование намного превышает общее количество ядер на 20–30%, но это еще один показатель того, насколько интенсивно работает ваш сервер.
источник