Добрый день! Есть север нагруженый, не могу разобраться с оптимизацией, подскажите пожалуйста. Просьба не советовать убить индейца, индеец нужен из за специфики сайтов!
упираются коннекты регулярно в потолок 300, хотя стоит 400 в конфиге.
Почему так и что поменять? UPD - вроде понял, надо ServerLimit поставить больше, хотя я сколько не пытался разобраться так и не понял что означают эти значения все ниже, не понятно что значит ServerLimit в частности и почему так много процессов апача создается (иногда видел по 300+, подвисших, помогал только рестарт апача).
Конфиг такой (апач в режиме префорка):
<IfModule mpm_prefork_module>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 400
MaxRequestsPerChild 10000
</IfModule>
1. Теоритически, если я правильно понимаю у меня может быть с текущим конфигом
MaxSpareServers
20 параллельно работающих серверов (процессов апача), при этом каждый из них держать до
ServerLimit
256 коннектов, но максимально
MaxClients
400? А
MaxRequestsPerChild
это количество запросов к одному из серверов после чего он будет убит, и запущен новый? Правильно ли я разобрался?
2. Как различить ApacheServer те что указаны в конфиге как
StartServers
от Child потока этого сервера?
3. У меня большая нагрузка на HDD диски идет, из-за этого как я понимаю CPU сильно загружен, но есть 20 GB свободных (40 из 64 забирает MYSQL).
Но 1 процесс апача может кушать до 200 мб оперативки. Это связано с тем чт оу меня около 2 гб кода PHP (wordpress много сайтов), и стоит php opcache, соответственно начинает очень быстро расти потребляемая память на процесс.
Память на процесс Apache = 53МБ, всего 6500МБroot@95:~# ps -ylC apache2 | awk '{x += $8;y += 1} END {print "Apache Memory Usage (MB): "x/1024; print "Average Process Size (MB): "x/((y-1)*1024)}'
Apache Memory Usage (MB): 6487.27
Average Process Size (MB): 53.1743
При этом пользователи у меня как правило совершают штучные запросы, а сайтов сотни. Как правильно сделать:
3.1 Сделать
MaxRequestsPerChild
= 100000+ , тогда будет всего
MaxSpareServers
~ 100 максимум т.к. каждый будет занимать по 200Мб
3.2 Сделать
MaxRequestsPerChild
= 1000 и
MaxSpareServers
= 1000 которые при старте занимают всего 20МБ, тогда теряется смысл Opcache или нет? Почему нужен OPcache потому чт ос ним сайты работают очень быстро, но я не понимаю процесса хранения скомпилированного кода (где он хранится, когда убивается?) и как это лучше оптимизировать.
Контакты ваши приветствуются в Телеграм, отблагодарю и возможно под ключ работу, если сможете мне все объяснить и сделать.