viernes, 13 de julio de 2012

apache No space left on device y si hay espacio en disco

Situación:  Apache no inicia el log muestra


[Fri Jul 13 22:03:17 2012] [emerg] (28)No space left on device: mod_fcgid: Can't create global fcgid-pipe mutex
[Fri Jul 13 22:07:05 2012] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Fri Jul 13 22:07:05 2012] [error] (28)No space left on device: Cannot create SSLMutex
Configuration Failed

pero si hay espacio en disco

# df -h
S.ficheros            Size  Used Avail Use% Montado en
/dev/xvda2             77G   17G   57G  23% /
tmpfs                 1,5G     0  1,5G   0% /dev/shm
/dev/xvda1             97M   49M   44M  53% /boot

y si hay nodos

# df -hi
S.ficheros            Inodes   IUsed   IFree IUse% Montado en
/dev/xvda2              4,9M    224K    4,7M    5% /
tmpfs                   367K       1    367K    1% /dev/shm
/dev/xvda1               26K      44     26K    1% /boot

El problema esta en los semáforos, los cuales se terminaron;

¿Qué es un semáforo? En palabras sencillas es una bandera que esta en el sistema operativo la cual utiliza para pausar ejecuciones con la finalidad de sincronizarlas; por ejemplo una aplicación pudiera estar esperando un semáforo de un servicio de disco duro indicándole que la información esta lista, tan pronto el semáforo se pone en verde la aplicación continua su ejecución.

Comprobar si el problema son semáforos:

Cantidad de semáforos ejecutados globalmente

# ipcs -s | grep -c .

Cantidad de semáforos ejecutados por apache

# ipcs -s |grep apache | grep -c .

Cantidad de semáforos configurados actualmente:
sysctl  -a | grep sem
kernel.sem = 200        32000   32      128


Solución
Ejecutar:


ipcs -s | grep apache | awk ' { print $2 } ' | xargs ipcrm sem


reiniciar apache y listo.

en lo personal me agrada editar /etc/init.d/httpd 
busquen start() y despúes de ahí agrego el comando de eliminar semáforos existentes


....
# when not running is also a failure.  So we just do it the way init scripts
# are expected to behave here.
start() {
ipcs -s | grep apache | perl -e 'while (<STDIN>) { @a=split(/\s+/); print `ipcrm sem $a[1]`}',
....
....

Por otro lado si tu servidor cuenta con mucho tráfico se incremente la probabilidad de repetir el problema y para evitarlo podemos aumentar la cantidad de semáforos editando  /etc/sysctl.conf , agrego:

kernel.sem = 250

y ejecuto:

 sysctl -p

el valor por default son 200, si realmente tienes mucha carga de trabajo puedes probar con una cantidad mayor, pero sin exagerar.






No hay comentarios:

Publicar un comentario

Ejemplo de factura electrónica 2022 en Panamá (DGI)

Código fuente Facturación 2022 Panamá Panamá comenzó el proceso de migración a facturación electrónica,  actualmente ya salieron los primero...