systemadmin.es > Correo > spamd: prefork: server reached –max-children setting, consider raising it

spamd: prefork: server reached –max-children setting, consider raising it

En el log del spamassassin (spamd) en ocasiones podemos encontrarnos con un mensaje indicandonos que debemos aumentar el parámetro “max-children“. Vamos a ver el significado de este mensaje y si debemos realmente aumentar el parámetro.

El error completo sería similar a este:

spamd[7318]: prefork: server reached --max-children setting, consider raising it

Para considerar elevar el número de procesos primero debemos ver la evolución de estos. Por ejemplo:

Apr 30 07:50:15 carlit spamd[7318]: prefork: child states: II
Apr 30 07:56:27 carlit spamd[7318]: prefork: child states: BB
Apr 30 07:56:27 carlit spamd[7318]: spamd: server successfully spawned child process, pid 25910
Apr 30 07:56:27 carlit spamd[7318]: prefork: child states: BBB
Apr 30 07:56:27 carlit spamd[7318]: spamd: server successfully spawned child process, pid 25911
Apr 30 07:56:27 carlit spamd[7318]: prefork: child states: BBBB
Apr 30 07:56:27 carlit spamd[7318]: spamd: server successfully spawned child process, pid 25918
Apr 30 07:56:27 carlit spamd[7318]: prefork: child states: BBBBB
Apr 30 07:56:27 carlit spamd[7318]: spamd: server successfully spawned child process, pid 25919
Apr 30 07:56:27 carlit spamd[7318]: prefork: child states: BBBBBB
Apr 30 07:56:27 carlit spamd[7318]: prefork: server reached --max-children setting, consider raising it

El significado de los estados es el siguiente:

  • I: Idle, el proceso esta a la espera
  • S: Starting, el proceso esta arrancando, por lo que aún no esta listo
  • K: Killed, el proceso se ha matado
  • B: Busy, el proceso esta analizando un mensaje

En el log anterior vemos como en un punto en el tiempo pasa de 2 a 6 procesos. Si seguimos el log veremos como después van bajando:

Apr 30 07:56:41 carlit spamd[7318]: prefork: child states: BIBBBB
Apr 30 07:56:42 carlit spamd[7318]: prefork: child states: BIBBIB
Apr 30 07:56:47 carlit spamd[7318]: prefork: child states: BIBIIB
Apr 30 07:56:47 carlit spamd[7318]: prefork: child states: BIBIKB
Apr 30 07:56:47 carlit spamd[7318]: spamd: handled cleanup of child pid 25918 due to SIGCHLD
Apr 30 07:56:48 carlit spamd[7318]: prefork: child states: IIBIB
Apr 30 07:56:48 carlit spamd[7318]: prefork: child states: IIBKB
Apr 30 07:56:48 carlit spamd[7318]: spamd: handled cleanup of child pid 25911 due to SIGCHLD
Apr 30 07:56:49 carlit spamd[7318]: prefork: child states: IIIB
Apr 30 07:56:49 carlit spamd[7318]: prefork: child states: IIKB
Apr 30 07:56:49 carlit spamd[7318]: spamd: handled cleanup of child pid 25910 due to SIGCHLD
Apr 30 07:56:49 carlit spamd[7318]: prefork: child states: III
Apr 30 07:56:49 carlit spamd[7318]: prefork: child states: IIK
Apr 30 07:56:49 carlit spamd[7318]: spamd: handled cleanup of child pid 25919 due to SIGCHLD
Apr 30 07:57:36 carlit spamd[7318]: prefork: child states: II

En este caso vemos como es un problema puntual, por lo que de momento no es necesario aumentar el número de procesos de spamassassin.

En el caso que viéramos que se trata de algo sostenido en el tiempo por la carga del servidor deberemos augmentar el parámetro –max-children. Por ejemplo, suponiendo que usamos daemontools, deberemos editar el fichero /service/spamd/run para cambiar el parámetro:

#!/bin/bash
exec /usr/bin/spamd -x -u spamd -H /home/spamd -r /var/run/spamd.pid --min-children=1 --min-spare=1 --max-spare=2 --max-children=7

2 comments to “spamd: prefork: server reached –max-children setting, consider raising it”

  1. ¿Qué es eso de augmentar?

  2. Un error corregido 😛

    Muchas gracias!

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>