Estamos tentando otimizar um Dell PowerEdge 1850, procs de 3GHz duplo, 3072MB de RAM, executando o Postfix 2.8.4 e assinando mensagens com o OpenDKIM 2.4.1.
A saída
iostat -x é:
avg-cpu: %user %nice %system %iowait %steal %idle
0.59 0.04 0.20 0.24 0.00 98.94
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 11.57 0.01 4.97 0.27 132.35 26.63 0.03 6.09 2.03 1.01
sda1 0.00 0.00 0.00 0.00 0.00 0.00 13.40 0.00 16.26 15.73 0.00
sda2 0.00 11.57 0.01 4.97 0.27 132.35 26.63 0.03 6.09 2.03 1.01
dm-0 0.00 0.00 0.01 16.54 0.27 132.35 8.01 0.11 6.55 0.61 1.01
dm-1 0.00 0.00 0.00 0.00 0.00 0.00 8.00 0.00 3.42 0.44 0.00
Saída principal:
top - 22:10:04 up 86 days, 1:46, 5 users, load average: 2.99, 2.94, 2.82
Tasks: 227 total, 8 running, 218 sleeping, 0 stopped, 1 zombie
Cpu(s): 66.1%us, 1.3%sy, 0.0%ni, 32.3%id, 0.0%wa, 0.0%hi, 0.2%si, 0.0%st
Mem: 3115136k total, 2819188k used, 295948k free, 248620k buffers
Swap: 5177336k total, 0k used, 5177336k free, 1695580k cached
Estamos usando o SwiftMailer para enviar e-mails para o Postfix via SMTP. Se tentarmos acionar mais de 3 instâncias paralelas de um script PHP que envia via SwiftMailer, a média de carga vai para 3+ e a velocidade de entrega diminui. Leva quase um dia inteiro para enviar 500 mil mensagens. Os servidores de e-mail remotos aceitam alegremente nossos e-mails e qualquer adiamento é passado para uma retransmissão de fallback.
Durante um envio, o nosso qshape mostra a fila esvaziando rapidamente:
T 5 10 20 40 80 160 320 640 1280 1280+
TOTAL 10 10 0 0 0 0 0 0 0 0 0
gmail.com 2 2 0 0 0 0 0 0 0 0 0
yahoo.com 2 2 0 0 0 0 0 0 0 0 0
aol.com 1 1 0 0 0 0 0 0 0 0 0
aim.com 1 1 0 0 0 0 0 0 0 0 0
evhs.net 1 1 0 0 0 0 0 0 0 0 0
myactv.net 1 1 0 0 0 0 0 0 0 0 0
hotmail.com 1 1 0 0 0 0 0 0 0 0 0
googlemail.com 1 1 0 0 0 0 0 0 0 0 0
E como estamos usando um retransmissor de fallback, a fila adiada em nosso servidor SMTP principal está vazia.
Estamos usando um servidor de nomes de cache recursivo local (Não consolidado) e seguimos todas as dicas de ajuste no README de Ajuste do postfix. Mas ainda estamos coçando a cabeça sobre onde procurar o gargalo a respeito do porquê de levar todo o dia para enviar 500 mil mensagens. Eu li outros artigos de otimização Postfix (incluindo um no ServerFault), mas o culpado sempre parece ser IO. Mas nossa saída iostat parece que os discos não estão ocupados.
Onde mais devemos começar a procurar?