Il post spiega come modificare i limiti del semaforo del kernel in un server CentOS/RHEL.
Parametri del kernel per impostare i limiti del semaforo
I parametri del kernel per impostare i limiti del semaforo sono:
kernel.sem = SEMMSL SEMMNS SEMOPM SEMMNI SEMMSL - max semaphores per array SEMMNS - max semaphores system wide SEMOPM - max ops per semop call SEMMNI - max number of arrays
Modifica dei limiti del semaforo
Se è necessario modificare un limite, tenere presente che (numero massimo di array)*(semafori massimi per array)>=(semafori massimi a livello di sistema) . Non c'è bisogno di avere più semafori a livello di sistema se limitato dalla quantità di un numero possibile di array con semafori massimi per esso.
Ad esempio:
# sysctl -a| grep kernel.sem kernel.sem = 250 32000 32 128
Per questo esempio, è necessario aumentare i semafori massimi per limite di array da 128 a 192. I semafori massimi a livello di sistema possono anche essere aumentati a 48000 ( 250*192 =48000>=32000) o mantenuti a 32000. In questo scenario, è mantenuto a 32000.
Per impostare il parametro del kernel in modo dinamico, cioè senza la necessità di riavviare il server.
# sysctl -w kernel.sem="250 32000 32 192" kernel.sem = 250 32000 32 192
Se tutto va bene con il sistema come previsto, modifica il parametro del kernel aggiungendolo al file /etc/sysctl.conf per assicurarti che il valore persista dopo il riavvio del server.
# cat /etc/sysctl.conf | grep kernel.sem kernel.sem = 250 32000 32 192
Se scegli di impostarlo direttamente nel file senza usare sysctl -w, dovrai ricaricare il file:
# sysctl -p
Puoi verificare i limiti attualmente impostati da:
# ipcs -ls ------ Semaphore Limits -------- max number of arrays = 192 max semaphores per array = 250 max semaphores system wide = 32000 max ops per semop call = 32 semaphore max value = 32767
Un semaforo è come un contatore utilizzato per controllare l'accesso alle risorse condivise da più processi. Viene spesso utilizzato come meccanismo di blocco per impedire ai processi di accedere a una determinata risorsa mentre un altro processo esegue operazioni su di essa. Il valore del semaforo può essere incrementato o decrementato fino al massimo impostato dalla variabile SEMVMX, “valore massimo semaforo”.