Apache: No space left on device: Couldn’t create accept lock
Enviado por miguelcarmona :: 22 de junio de 2012
El servidor web Apache lo he visto fallar de dos formas distintas (persistentes a reinicios) por el mismo problema de semáforos. Vamos a ver cómo solucionarlo:
En varias ocasiones he visto el siguiente error en el log:
[emerg] (28)No space left on device: Couldn't create accept lock
Pero también podemos encontrarnos que el server arranca y esta escuchando perono nos devuelve nada:
$ curl -I localhost -H 'Host: ejemplo.com' curl: (52) Empty reply from server
Y van apareciendo Segmentation faults en el log de error:
[notice] child pid 8033 exit signal Segmentation fault (11)
Causado por los semáforos que usa para comunicarse con los “apachitos” que no se han liberado:
# ipcs -s ------ Semaphore Arrays -------- key semid owner perms nsems 0x00000000 2818048 apache 600 1 0x00000000 15073281 apache 600 1 0x00000000 15106050 apache 600 1 0x00000000 425987 jprats 600 1 (...)
Deberemos apagar el apache y limpiarlos con ipcrm:
for i in $(ipcs -s | awk ' $3 == "apache" {print $2}'); do ipcrm sem $i; done resource(s) deleted
A continuación, ya lo podemos arrancar. Dicho comando es seguro ejecutarlo antes de arrancar el apache, por lo que lo podemos definir en el script de inicio y evitar así que surja el problema y tener que intervenir manualmente.
Apache: No space left on device: Couldn’t create accept lock | systemadmin.es.