Qmail-smtpd. Consumo alto de CPU

Hoy me he dado cuenta de un problema, gracias a las alertas del PIM(Parallels Infrastructure Manager). Uno de los contenedores, Plesk 8.6 en Centos5, tenía una carga de CPU muy elevada, permanentemente al 99%, y los parámetros load, load5 y load15 con puntos muy altos. Al hacer el top vi algo parecido a esto:


PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
28141 qmaild 25 0 4600 1376 1168 R 27 0.1 0:28.09 qmail-smtpd
27851 qmaild 25 0 4708 1372 1168 R 26 0.1 1:23.48 qmail-smtpd
28268 qmaild 25 0 3948 1372 1168 R 24 0.1 0:05.79 qmail-smtpd
27507 qmaild 25 0 4468 1372 1168 R 23 0.1 1:56.58 qmail-smtpd
28244 qmaild 25 0 4520 1372 1168 R 20 0.1 0:06.82 qmail-smtpd
28045 qmaild 25 0 3820 1376 1168 R 20 0.1 0:48.50 qmail-smtpd
28117 qmaild 25 0 3724 1372 1168 R 20 0.1 0:33.20 qmail-smtpd
28118 qmaild 25 0 4452 1372 1168 R 20 0.1 0:33.59 qmail-smtpd
28163 qmaild 25 0 5200 1380 1168 R 20 0.1 0:25.30 qmail-smtpd

Encontré el problema buscando un poco. Al parecer, el problema eran dos archivos de certificado usados por qmail para sesiones TLS. Qmail busca esos dos archivos, al no encontrarlos, intenta generarlos “al vuelo” consumiendo largas partes de tiempo de la CPU.

Es posible que tengamos los archivos en nuestro sistema, pero con otro nombre, un nombre que qmail no sabe identificar.

# ls -ls /var/qmail/control


4 -rw-r--r-- 1 root root 245 Aug 22 15:33 dhparam1024.pem
4 -rw-r--r-- 1 root root 156 Aug 22 15:32 dhparam512.pem

Son los archivos dhparam1024.pem y dhparam512.pem. Hacemos backup de ellos por si acaso y renombramos los originales por el nombre que deben tener


# cp dhparam1024.pem dhparam1024.pem.bak
# cp dhparam512.pem dhparam512.pem.bak
# mv dhparam512.pem dh512.pem
# mv dhparam1024.pem dh1024.pem

Quedando así


4 -rw-r--r-- 1 root root 245 Aug 22 15:33 dh1024.pem
4 -rw-r--r-- 1 root root 156 Aug 22 15:32 dh512.pem

Reiniciamos Qmail y deberíamos observar desde el inicio una notable bajad del consumo de la cpu.

Saludos.

Leave a Reply

Your email address will not be published. Required fields are marked *