Eu tenho um site com cerca de 80K de visitantes (diariamente).
Este site está hospedado no linode.com e tem um nodebalancer (o mesmo que um loadbalancer) com 3nodes atrás dele (2x linode 512 & 1x linode 1024).
Às vezes, o tráfego está me matando e meus servidores não respondem (/ ping não funciona mais e força meu balanceador de nó a tirar o nó da rotação).
Estou procurando uma maneira de descobrir como gerenciar a carga. Eu já estou procurando no www.slow.log, para descobrir possíveis causas de processos duradouros. Talvez vocês possam me ajudar a otimizar minhas configurações para minhas máquinas?
Minha configuração atual:
[www]
user = www-data
group = www-data
listen = 127.0.0.1:9000
pm = dynamic
pm.max_children = 70
pm.start_servers = 10
pm.min_spare_servers = 6
pm.max_spare_servers = 15
pm.process_idle_timeout = 10s;
pm.max_requests = 200
pm.status_path = /status
ping.path = /ping
ping.response = pong
slowlog = /var/log/$pool.log.slow
request_slowlog_timeout = 60
chdir = /
php_admin_value[error_log] = /var/log/fpm-php.www.log
php_admin_flag[log_errors] = on
EDITAR
Aqui está o topo de uma máquina que está construindo uma carga operacional
> top - 12:33:41 up 35 days, 44 min, 12 users, load average: 8.57,
> 12.83, 12.21 Tasks: 193 total, 6 running, 187 sleeping, 0 stopped, 0 zombie Cpu(s): 36.6%us, 4.2%sy, 0.0%ni, 30.1%id, 0.0%wa, 0.0%hi,
> 0.6%si, 28.5%st Mem: 1027516k total, 603048k used, 424468k free, 149040k buffers Swap: 524284k total, 110392k used, 413892k free,
> 54064k cached
>
> PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
> 31585 www-data 20 0 70600 16m 4388 R 37 1.7 0:09.92 php5-fpm
> 31558 www-data 20 0 71352 17m 4344 R 33 1.7 0:18.18 php5-fpm
> 31581 www-data 20 0 66480 13m 4312 S 22 1.3 0:12.08 php5-fpm
> 31555 www-data 20 0 66220 12m 4344 S 19 1.3 0:16.51 php5-fpm
> 31578 www-data 20 0 67244 13m 4352 S 19 1.4 0:10.53 php5-fpm
> 31604 www-data 20 0 66992 13m 4180 S 15 1.3 0:05.31 php5-fpm
> 31556 www-data 20 0 67244 13m 4324 S 15 1.4 0:16.53 php5-fpm
> 31557 www-data 20 0 66476 12m 4340 R 13 1.3 0:17.35 php5-fpm
> 31602 www-data 20 0 66468 13m 4320 S 12 1.3 0:06.59 php5-fpm
> 31582 www-data 20 0 67244 13m 4328 S 11 1.4 0:11.18 php5-fpm
> 31579 www-data 20 0 69328 15m 4344 R 11 1.6 0:10.76 php5-fpm
> 31586 www-data 20 0 66736 13m 4308 S 9 1.3 0:08.17 php5-fpm
> 31603 www-data 20 0 67504 14m 4324 S 8 1.4 0:06.35 php5-fpm
> 31580 www-data 20 0 67244 13m 4336 S 7 1.4 0:11.06 php5-fpm
> 31583 www-data 20 0 66736 13m 4300 S 7 1.3 0:10.80 php5-fpm
> 31584 www-data 20 0 68024 14m 4356 S 6 1.4 0:10.17 php5-fpm
> 31587 www-data 20 0 66736 13m 4328 S 6 1.3 0:08.18 php5-fpm
> 31574 www-data 20 0 57856 52m 816 S 2 5.2 0:01.75 nginx
> 31634 ward 20 0 2520 1040 736 R 1 0.1 0:00.09 top
> 15554 ward 20 0 2520 552 264 R 1 0.1 59:04.40 top
> 1023 root 0 -20 0 0 0 S 0 0.0 18:19.96
> kworker/0:1H
> 31575 www-data 20 0 57856 52m 808 S 0 5.2 0:00.53 nginx
> 31607 ward 20 0 8868 1292 772 S 0 0.1 0:00.01 sshd
>
> 1 root 20 0 2088 120 120 S 0 0.0 0:46.60 init
> 2 root 20 0 0 0 0 S 0 0.0 0:03.17 kthreadd
EDIT2: Feedback sobre a solução por growse
Eu troquei os 3 servidores para pools estáticos. Parece que a carga está melhor sob controle agora. Eu também aumento os max_requests para 5000.
Você pode ver as estatísticas do pool de cada servidor abaixo:
Servidor1: 1024 máquina
pool: www
process manager: static
start time: 30/Dec/2012:12:48:23 +0100
start since: 489
accepted conn: 4311
listen queue: 0
max listen queue: 0
listen queue len: 128
idle processes: 35
active processes: 15
total processes: 50
max active processes: 35
max children reached: 0
Servidor2: 512 máquina
pool: www
process manager: static
start time: 30/Dec/2012:12:45:40 +0100
start since: 709
accepted conn: 11010
listen queue: 0
max listen queue: 9
listen queue len: 128
idle processes: 33
active processes: 7
total processes: 40
max active processes: 40
max children reached: 0
Servidor3: 512 máquina
pool: www
process manager: static
start time: 30/Dec/2012:12:38:25 +0100
start since: 1159
accepted conn: 21645
listen queue: 0
max listen queue: 129
listen queue len: 128
idle processes: 35
active processes: 5
total processes: 40
max active processes: 40
max children reached: 0
Todos os servidores estão sendo mais estáveis agora com uma carga em torno de 1-2.