Un poco de información, simplificando un poco (o mucho), un semaforo es una variable que se utiliza para gestionar el bloqueo de un recurso (más info wikipedia-semaforos ) y de esta manera evitar un deadlock o abrazo de la muerte (más info wikipedia-Bloqueo mutuo). Estos son utilizados sobre todo por la Base de Datos, servidores web, ...etc.
Teniendo en cuenta esto, quedarnos sin semáforos, puede implicar que se nos bloquee la BBDD, el servidor web o la aplicación que los utilice.
Ahora vamos a ver como revisar los semáforos de un servidor y como aumentarlos.
Para ver los limites de los semáforos se pueden ver de la siguiente manera:
# ipcs -lsAqui podemos ver que nos indica los limites que tenemos en el sistema.
------ Semaphore Limits --------
max number of arrays = 250
max semaphores per array = 250
max semaphores system wide = 32000
max ops per semop call = 100
semaphore max value = 32767
Podemos mirar los semáforos en uso:
# ipcs -suEn este caso estamos en el limite de arrays usados y este es el valor que deberíamos aumentar. Para hacerlo utilizaremos el comando sysctl , revisando la configuración actual:
------ Semaphore Status --------
used arrays = 241
allocated semaphores = 3718
# /sbin/sysctl kernel.semDonde cada parametro indica lo siguiente:
kernel.sem = 250 32000 100 250
SEMMSL - The maximum number of semaphores in a sempahore set
SEMMNS - The maximum number of sempahores in the system
SEMOPM - The maximum number of operations in a single semop call
SEMMNI - The maximum number of sempahore sets
Para ampliarlo tendremos que aumentar el ultimo parámetro:#/sbin/sysctl -w kernel.sem="250 3200 100 300"Y revisamos que se ha realizado los cambios:
# ipcs -slPor ultimo modificamos el fichero /etc/sysctl.conf para que se mantengan los cambios en el próximo reinicio. Para eso añadimos o modificamos la siguiente linea en el fichero /etc/sysctl.conf:
------ Semaphore Limits --------
max number of arrays = 300
max semaphores per array = 250
max semaphores system wide = 3200
max ops per semop call = 100
semaphore max value = 32767
kernel.sem=250 3200 100 300
Y eso es todo.
Un saludo a todos y recordad:
Ser todo lo felices que podáis ser.
Quitos.