Não gosto de administração de sistemas, mas sei quando o servidor está no limite máximo. Todas as solicitações http demoram muito para serem concluídas. Estou anexando os processos "principais" em execução no meu servidor.
Isso é normal? O que estou fazendo de errado?
(Posso colar mais arquivos, se solicitado.)
Por favor, observe que o servidor é para fins de teste e o único usuário que o acessa sou eu no momento.
Além disso, este é meu arquivo apache2.conf:
PidFile ${APACHE_PID_FILE}
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
<IfModule mpm_worker_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
<IfModule mpm_event_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
AccessFileName .htaccess
<Files ~ "^\.ht">
Order allow,deny
Deny from all
Satisfy all
</Files>
DefaultType None
HostnameLookups Off
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
Include mods-enabled/*.load
Include mods-enabled/*.conf
Include ports.conf
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
Include conf.d/
Include sites-enabled/
Esta é a saída do status do servidor:
Apache Server Status for localhost
Server Version: Apache/2.2.22 (Debian) PHP/5.4.39-0+deb7u2 mod_wsgi/3.3 Python/
2.7.3
Server Built: Jul 24 2014 15:34:00
-------------------------------------------------------------------------------
Current Time: Tuesday, 23-Jun-2015 11:38:02 BST
Restart Time: Tuesday, 23-Jun-2015 11:33:36 BST
Parent Server Generation: 0
Server uptime: 4 minutes 25 seconds
Total accesses: 54 - Total Traffic: 58 kB
CPU Usage: u25.08 s1.64 cu0 cs0 - 10.1% CPU load
.204 requests/sec - 224 B/second - 1099 B/request
4 requests currently being processed, 3 idle workers
W_WW__..W.......................................................
................................................................
................................................................
................................................................
Scoreboard Key:
"_" Waiting for Connection, "S" Starting up, "R" Reading Request,
"W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
"C" Closing connection, "L" Logging, "G" Gracefully finishing,
"I" Idle cleanup of worker, "." Open slot with no current process
Srv PID Acc M CPU SS Req Conn Child Slot Client VHost Request
0-0 13852 0/4 _ 5.07 2218 90 0.0 0.00 0.00 11.11.11.111 server1.project NULL
/4
22/
1-0 13854 22/ W 5.87 2235 0 42.2 0.04 0.04 11.11.11.111 server2.project2 GET /ajax/period_stats/?object_id=16106&period_unit=month&perio
22
2-0 13855 0/9 _ 4.87 2211 460 0.0 0.00 0.00 11.11.11.111 server1.project NULL
/9
3-0 13857 0/8 _ 4.54 2218 341 0.0 0.01 0.01 11.11.11.111 server1.project NULL
/8
4-0 13858 6/6 W 4.61 2224 0 1.6 0.00 0.00 11.11.11.111 server2.project2 GET /ajax/period_stats/?object_id=16110&period_unit=month&perio
/6
5-0 13878 3/3 W 4.28 2224 0 0.5 0.00 0.00 11.11.11.111 server2.project2 GET /ajax/period_stats/?object_id=16104&period_unit=hour&period
/3
6-0 13881 0/0 W 0.00 2203 0 0.0 0.00 0.00 11.11.11.111 server2.project2 GET /ajax/period_stats/?object_id=16104&period_unit=hour&period
/0
7-0 13882 0/2 _ 5.27 2193 12446 0.0 0.00 0.00 11.11.11.111 server1.project NULL
/2
8-0 13885 0/1 _ 0.01 1086 1 0.0 0.00 0.00 localhost server1.project GET /server-status HTTP/1.0
/1
9-0 13886 0/0 W 0.00 0 0 0.0 0.00 0.00 ::1 server1.project GET /server-status HTTP/1.0
/0
10-0 13887 0/1 _ 5.92 1317 14928 0.0 0.00 0.00 11.11.11.111 server2.project2 POST /core/user/exits/ HTTP/1.1
/1
11-0 13888 0/1 _ 0.00 62 1 0.0 0.00 0.00 localhost server1.project GET /server-status HTTP/1.0
/1
Responder1
Como você está usando o módulo prefork e o servidor é apenas para testes você poderia alterar os valores: visto que você tem 2GB de RAM eu colocaria valores um pouco menores:
<IfModule mpm_prefork_module>
StartServers 2
MinSpareServers 2
MaxSpareServers 4
MaxClients 16
MaxRequestsPerChild 50
</IfModule>
Esses são números "aleatórios", pois não conheço sua aplicação ou os dados que você está gerenciando, mas devem ser suficientes para fazer testes com menos impacto. Se você pretende entrar no ar e espera mais usuários, precisará ajustar essa configuração.
Você pode ver na documentação do Apache a explicação desses valores, mas a versão resumida é que com o prefork MPM o Apache criará um pool de processos para atender as solicitações, com a configuração sugerida esse pool será menor.