het Geek-dagboek
The post legt uit hoe kernel-semafoorlimieten kunnen worden gewijzigd in een CentOS/RHEL-server.
kernelparameters om semafoorlimieten in te stellen
de kernelparameters om de semafoorlimieten in te stellen zijn::
kernel.sem = SEMMSL SEMMNS SEMOPM SEMMNISEMMSL - max semaphores per arraySEMMNS - max semaphores system wideSEMOPM - max ops per semop callSEMMNI - max number of arrays
wijzigen van Semafoorlimieten
als een limiet moet worden gewijzigd, moet er rekening mee worden gehouden dat (max aantal arrays)*(max semaforen per array) >= (max semaforen systeem-breed). Geen behoefte om meer semaforen systeem-breed als beperkt door de hoeveelheid van een mogelijk aantal arrays met max semaforen per het.
bijvoorbeeld:
# sysctl -a| grep kernel.semkernel.sem = 250 32000 32 128
in dit voorbeeld moeten we de maximale semaforen per array limiet verhogen van 128 naar 192. De max semaforen systeem-breed kan ook worden verhoogd tot 48000 ( 250*192 = 48000 >= 32000) of gehouden als 32000. In dit scenario wordt het op 32000 gehouden.
om kernelparameter dynamisch in te stellen, d.w.z. zonder dat de server opnieuw moet worden opgestart.
# sysctl -w kernel.sem="250 32000 32 192"kernel.sem = 250 32000 32 192
als alles in orde is met het systeem zoals verwacht, pas dan de kernelparameter aan door het toe te voegen aan /etc/sysctl.conf-bestand om ervoor te zorgen dat de waarde blijft bestaan na het opnieuw opstarten van de server.
# cat /etc/sysctl.conf | grep kernel.semkernel.sem = 250 32000 32 192
als je ervoor kiest om het direct in het bestand in te stellen zonder de sysctl-w te gebruiken, moet je het bestand herladen:
# sysctl -p
u kunt de huidige limieten controleren door:
# 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