Ayer detecté un error poco frecuente en un servidor web con apache.
Después de una caida del servidor, cuando intentaba iniciar el apache este no arrancaba y en el log aparecía el error.
(28)No space left on device: Couldn’t create accept lock (/var/lock/apache2/accept.lock.xxxxx) (5)
Espacio en disco duro no falta, así que el problema era otro por lo que revolviendo por internet vi que, por suerte, no era el primero que le pasaba algo así y que ese error se achacaba a un problema con el array de semáforos.
Al hacer un
ipcs -s |
se veía que tenía un montón de semáforos abiertos por el usuario del apache cuando este no está funcionando.
La solución pasa por eliminar todos los semáforos abiertos por el usuario del apache y ya se puede reiniciar sin problemas.
Si los liberas a mano puedes utilizar:
ipcrm -s proceso |
O si lo prefieres automatizar un poco:
for i in `/usr/bin/ipcs -s | /bin/grep www-data | /usr/bin/awk '{print $2}'` ; do /usr/bin/ipcrm -s $i; done |
Ahora sólo me queda averiguar por que se llena el array de semáforos y no se libera.