Я использую хостинг на основе VPS для веб-сайта и обнаружил, что apache2 + prefork + mod_php по умолчанию является слишком ресурсоемким для моего VPS для достижения приемлемого параллелизма. (Ест RAM)
Итак, я недавно перешел на apache2 + mpm_worker + mod_fcgid + php5
Ниже представлена моя конфигурация соответствующих модулей.
<IfModule mpm_worker_module>
StartServers 4
MinSpareThreads 10
MaxSpareThreads 200
ThreadLimit 200
ThreadsPerChild 25
MaxClients 200
MaxRequestsPerChild 1000
</IfModule>
<IfModule mod_fcgid.c>
AddHandler fcgid-script .fcgi .php
# Where to look for the php.ini file?
DefaultInitEnv PHPRC "/etc/php5/apache2"
# Maximum requests a process handles before it is terminated
MaxRequestsPerProcess 1000
# Maximum number of PHP processes
MaxProcessCount 10
# Number of seconds of idle time before a process is terminated
IPCCommTimeout 240
IdleTimeout 240
#Or use this if you use the file above
FCGIWrapper /usr/bin/php5-cgi-wrapper .php
</IfModule>
Проблема в том, что при нагрузочном тестировании моего веб-сайта я не могу перегружать процессор моего сервера. Также доступна большая пропускная способность сети. Использование памяти ниже 20% от моего 1 ГБ VPS. Но все же время загрузки увеличивается.
Я не знаю, что делаю не так.
Я медленно увеличиваю количество одновременных запросов / соединений с 50 до 200. Это нагрузка на сервер.
Я использовал iotop для измерения io диска. там нет ничего значительного. 3-5к / сек в пиковом режиме.
Что ж, если это Disk IO, у меня очень мало места для игры в качестве размещенного VPS.
Я просто попытался загрузить простой html-файл, кэшированный из вывода php, чтобы исключить любые задержки на фронте php. Узкое место - не php. График такой же.
Это должно быть проблемой параллелизма!