The Geek Diary
o post explica como os limites do semáforo do kernel podem ser alterados em um servidor CentOS/RHEL.
Parâmetros de Kernel para definir semáforo limites
parâmetros Do kernel para definir o semáforo limites são:
kernel.sem = SEMMSL SEMMNS SEMOPM SEMMNISEMMSL - max semaphores per arraySEMMNS - max semaphores system wideSEMOPM - max ops per semop callSEMMNI - max number of arrays
Mudança do Semáforo Limites
Se um limite que precisa ser mudado não deve ser levado em conta que (máximo número de matrizes)*(máximo de semáforos por matriz) >= (max semáforos sistema-amplo). Não há necessidade de ter mais semáforos em todo o sistema se limitado pela quantidade de um possível Número de matrizes com semáforos máximos por ele.
por exemplo:
# sysctl -a| grep kernel.semkernel.sem = 250 32000 32 128
para este exemplo, precisamos aumentar os semáforos máximos por limite de matriz de 128 para 192. Os semáforos máximos em todo o sistema também podem ser aumentados para 48000 ( 250*192 = 48000 >= 32000) ou mantido como 32000. Neste cenário, é mantido em 32000.
para definir o parâmetro do kernel dinamicamente, ou seja, sem a necessidade de reinicialização do servidor.
# sysctl -w kernel.sem="250 32000 32 192"kernel.sem = 250 32000 32 192
se tudo estiver bem com o sistema como esperado, modifique o parâmetro do kernel adicionando-o ao /etc/sysctl.conf arquivo para garantir que o valor persiste após a reinicialização do servidor.
# cat /etc/sysctl.conf | grep kernel.semkernel.sem = 250 32000 32 192
Se você escolher para defini-lo diretamente no arquivo, sem usar a variável do sysctl -w, você irá precisar recarregar o arquivo:
# sysctl -p
Você pode verificar os limites, atualmente definidos por:
# ipcs -ls------ Semaphore Limits --------max number of arrays = 192max semaphores per array = 250max semaphores system wide = 32000max ops per semop call = 32semaphore max value = 32767