The Geek Diary
Il post spiega come i limiti del semaforo del kernel possono essere modificati 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 SEMMNISEMMSL - max semaphores per arraySEMMNS - max semaphores system wideSEMOPM - max ops per semop callSEMMNI - max number of arrays
Modifica dei limiti del semaforo
Se è necessario modificare un limite, è necessario tenere conto di questo (numero massimo di array)*(max semafori per array) >= (max semafori a livello di sistema). Non c’è bisogno di avere più semafori a livello di sistema se limitati dalla quantità di un possibile numero di array con semafori massimi per esso.
Per esempio:
# sysctl -a| grep kernel.semkernel.sem = 250 32000 32 128
Per questo esempio, dobbiamo aumentare i semafori massimi per limite di array da 128 a 192. Il max semafori a livello di sistema può anche essere aumentato a 48000 ( 250*192 = 48000 >= 32000) o mantenuto come 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, modificare il parametro del kernel aggiungendolo a/etc / sysctl.file conf per garantire che il valore persista dopo il riavvio del server.
# cat /etc/sysctl.conf | grep kernel.semkernel.sem = 250 32000 32 192
Se si sceglie di impostarlo direttamente nel file senza utilizzare sysctl-w, è necessario ricaricare il file:
# sysctl -p
È possibile verificare i limiti attualmente impostati da:
# 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