Saudações,
No meu servidor dedicado do CentOS 5.4, eu configuro o apache com cerca de uma dúzia de hosts virtuais. Eu testo alguns deles, cada um carregado dentro de um segundo; bastante rápido. A média de carga é menor que 1. Sem problemas. Estou executando sites HTML estáticos, um blog WordPress com o MySQL 5.0 ... esses sites não são de alta largura de banda; nada que possa estressar esse servidor.
Na manhã seguinte, começo a trabalhar, carrego o site principal e demora de 10 a 20 segundos para carregar. Eu verifico a média de carga no servidor e ele está em torno de 3, às vezes até 5, uma vez que vi em 8, nunca abaixo de 2. Neste ponto eu normalmente salto o apache:
# apachectl -k graceful
Leva cerca de meio minuto, então tudo está bem novamente. Todos os hosts virtuais são carregados rapidamente, menos de um segundo. A média de carga rapidamente cai abaixo de 1.
Ao verificar / status do servidor, não há muita coisa acontecendo; Ao verificar o tráfego líquido ( vnstat -l
ou vnstat -h
), não está sendo usada muita largura de banda. Ambos são comparáveis no início do dia e no final. No entanto, quando eu verifico de manhã, o apache é muito, muito mais lento do que praticamente todo o dia. O que está acontecendo da noite para o dia para fazer com que o apache diminua tanto e consuma muitos recursos do sistema?
# httpd -V
Server version: Apache/2.2.3
# uname -a
Linux myserver.com 2.6.18-92.el5 #1 SMP Tue Jun 10 18:51:06 EDT 2008 x86_64 x86_64 x86_64 GNU/Linux
# free
total used free shared buffers cached
Mem: 1025576 1017292 8284 0 8208 43160
-/+ buffers/cache: 965924 59652
Swap: 2096472 361012 1735460
Suponho que eu poderia configurar um cronjob que normalmente saltava o apache diariamente, mas isso parece uma solução rápida e suja. Eu prefiro encontrar a causa e consertar isso.
ATUALIZAÇÃO 2009-10-28 14:38; amostras coletadas a cada 10 segundos durante cinco minutos com média:
$ sar -W 10 30 && date
Linux 2.6.18-92.el5 (myserver.com) 10/28/2009
02:32:36 PM pswpin/s pswpout/s
02:32:46 PM 10.31 30.43
02:32:56 PM 2.30 32.93
02:33:06 PM 21.56 0.00
02:33:16 PM 1.80 0.00
02:33:26 PM 5.69 26.67
02:33:36 PM 0.10 0.00
02:33:46 PM 25.70 7.60
02:33:56 PM 10.61 7.11
02:34:06 PM 4.10 2.60
02:34:16 PM 0.70 0.00
02:34:26 PM 0.00 0.00
02:34:36 PM 0.00 0.00
02:34:46 PM 3.80 0.00
02:34:56 PM 0.00 0.00
02:35:06 PM 0.00 11.01
02:35:16 PM 7.70 30.30
02:35:26 PM 20.32 0.00
02:35:36 PM 1.60 0.00
02:35:46 PM 11.60 0.00
02:35:56 PM 2.50 0.00
02:36:06 PM 0.00 0.00
02:36:16 PM 3.60 0.00
02:36:26 PM 0.00 0.00
02:36:36 PM 0.00 0.00
02:36:46 PM 0.00 0.00
02:36:56 PM 445.20 56.60
02:37:06 PM 0.00 0.00
02:37:16 PM 0.00 0.00
02:37:26 PM 0.00 0.00
02:37:36 PM 0.00 0.00
Average: 19.31 6.84
Wed Oct 28 14:37:36 PDT 2009
Curiosamente, o apache não está lento esta manhã. Fiz alguns ajustes no número de servidores iniciados, num servidores extras, número máximo de servidores, etc, ontem. Deixe-me pegar os valores antigos e comparar ...
Valores originais de /etc/httpd/conf/httpd.conf:
StartServers 20
MinSpareServers 20
MaxSpareServers 120
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000
Novos valores que, de todas as aparências, parecem funcionar bem:
StartServers 30
MinSpareServers 30
MaxSpareServers 40
ServerLimit 50
MaxClients 50
MaxRequestsPerChild 4000
Provavelmente continuarei a ajustar um pouco essas configurações, mas elas parecem funcionar bem agora.
comando Sar esta manhã:
$ sar -W 10 30 && date
Linux 2.6.18-92.el5 (myserver.com) 10/29/2009
09:31:09 AM pswpin/s pswpout/s
09:31:19 AM 5.80 54.40
09:31:29 AM 62.10 0.00
09:31:39 AM 0.00 0.00
09:31:49 AM 0.00 0.00
09:31:59 AM 0.00 0.00
09:32:09 AM 3.30 0.00
09:32:19 AM 2.70 0.00
09:32:29 AM 0.00 0.00
09:32:39 AM 0.00 0.00
09:32:49 AM 0.00 0.00
09:32:59 AM 3.10 0.00
09:33:09 AM 5.80 0.00
09:33:19 AM 0.00 0.00
09:33:29 AM 0.00 0.00
09:33:39 AM 0.00 0.00
09:33:49 AM 0.00 0.00
09:33:59 AM 0.00 0.00
09:34:09 AM 0.00 0.00
09:34:19 AM 0.00 0.00
09:34:29 AM 0.00 0.00
09:34:39 AM 4.00 0.00
09:34:49 AM 0.10 0.00
09:34:59 AM 0.00 0.00
09:35:09 AM 4.80 0.00
09:35:19 AM 0.00 0.00
09:35:29 AM 291.29 0.00
09:35:39 AM 0.00 0.00
09:35:49 AM 0.80 0.00
09:35:59 AM 0.00 0.00
09:36:09 AM 0.00 0.00
Average: 12.78 1.81
Thu Oct 29 09:36:09 PDT 2009
A média é menor! E o servidor recebeu mais tráfego do que ontem. Womble, parece que você estava certo! E agora tudo está bem no universo novamente.
John Gardeniers, boa ideia! Ele tem a opção -o [filename]
apenas para isso. Obrigado pela dica!
Jeremy Visser, dstat
é uma ferramenta muito fofa! Obrigado pela dica! Não foi instalado, teve que yum install dstat
.