У меня есть сервер с сервером Apache с PHP.
PHP 5.3.28
RAM 20G
В Apache я настроил 40 доменов со следующими характеристиками:
<VirtualHost *:80>
ServerName domain.com
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" **%T/%D**" combined_t
ErrorLog "|/usr/apache2/2.2/bin/rotatelogs /opt/avv2002_data/logs/domain_err.%Y%m%d 86400"CustomLog "|/usr/apache2/2.2/bin/rotatelogs /opt/avv2002_data/logs/domain_log.%Y%m%d 86400" combined_t
LogLevel info
DocumentRoot "/opt/www/apache/joomla/sites/"DirectoryIndex index.htm index.html index.php
<Directory "/opt/www/apache/joomla/sites/">
Options -Indexes FollowSymlinks Includes MultiViews
AllowOverride All
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.html [NC,L]
</Directory>
</VirtualHost>
Несколько дней назад разработка загрузила новое приложение на PHP, и мой сервер начал с проблем с ram и cpu, немного посмотрев, я обнаружил следующее:
слишком много процесса, дети и TIME_WAIT.
пример:
использовать своп.
извлечь своп с pmap
swap: 212276 байт, pid: 23158
# ps auxww | grep 23158
webservd 23158 0.1 0.121227628216 ? S 11:49:57 0:06 /usr/apache2/2.2/bin/httpd -k start
увидеть слишком много TIME_WAIT
netstat -aun | grep 23158
serverip.80 serverip.61768 root 23158 httpd 44876 0 65160 0 TIME_WAIT
serverip.80 serverip.31254 root 23158 httpd 7843 0 65160 0 TIME_WAIT
serverip.80 serverip.55937 root 23158 httpd 7262 0 65160 0 TIME_WAIT
serverip.80 serverip.52572 root 23158 httpd 4845 0 65160 0 TIME_WAIT
serverip.80 serverip.49687 root 23158 httpd 7075 0 65160 0 TIME_WAIT
serverip.80 serverip.29891 root 23158 httpd 29310 0 65160 0 TIME_WAIT
serverip.80 serverip.57332 root 23158 httpd 9557 0 65160 0 TIME_WAIT
serverip.80 serverip.20296 root 23158 httpd 7262 0 65160 0 TIME_WAIT
serverip.80 serverip.16077 root 23158 httpd 61246 0 65160 0 TIME_WAIT
.......netstat -aun | grep "ipserver.80" | wc -l
2077
ps auxww | grep "/usr/apache2/2.2/bin/httpd -k start" | wc -l
507
мой сервер apache показывает полный статус wwwwwwwwwwwww
pache Server Status for serverip
Server Version: Apache/2.2.27 (Unix) mod_ssl/2.2.27 OpenSSL/1.0.1h DAV/2 PHP/5.3.28 mod_fcgid/2.3.9
Server Built: Jun 17 2014 11:19:37
Current Time: Wednesday, 05-Apr-2017 13:50:10 CDT
Restart Time: Wednesday, 05-Apr-2017 13:12:10 CDT
Parent Server Generation: 0
Server uptime: 38 minutes
Total accesses: 125046 - Total Traffic: 3.6 GB
CPU Usage: u404.25 s342.99 cu0 cs0 - 32.8% CPU load
54.8 requests/sec - 1.6 MB/second - 30.4 kB/request
29 requests currently being processed, 0 idle workers
WWWWWWwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
WWWWWWwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
WWWWWWwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
WWWWWWwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
WWWWWWwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
WWWWWWwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
WWWWWWwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
WWWWWWwWWWWWW
Есть ли какой-нибудь способ узнать, в каком домене много трафика? Таким образом, вы можете точно знать, что было изменено командой разработчиков
Я думал о профилировщике PHP, чтобы увидеть, какой домен занимает больше времени
Любая идея, что еще я должен проверить?
Вы достигли максимального количества работников, вам нужно его увеличить. Мы разместили руководство по как увеличить максимальное количество рабочих Apache на WHM, в вашем случае вам нужно будет сделать это вручную в файле конфигурации Apache (измените MaxClients на 1024).
Теперь возникает вопрос: почему вы достигли максимального количества работников, это из-за реального трафика или из-за чего-то еще?
Мой совет — проверить журналы Apache (я не знаю, какова структура в Solaris, когда я в последний раз работал над этим в 2004 году) и посмотреть, какой веб-сайт имеет больше всего трафика (это трафик с наибольшим журнал). Затем вы должны проанализировать этот трафик: это реальный трафик? Это бот-трафик? Если это трафик ботов, то является ли он легальным трафиком ботов (если нет, то вам следует блокировать всех этих нелегитимных ботов)?
Если это реальный трафик, то много ли у вас 404? Если да, то вам нужно обратиться к этим 404-м — потому что каждому 404-му нужен будет другой работник в экземпляре Joomla.
Других решений пока нет …