Das Geek-Tagebuch
Der Beitrag erklärt, wie Kernel-Semaphor-Grenzwerte in einem CentOS / RHEL-Server geändert werden können.
Kernel-Parameter zum Setzen der Semaphor-Limits
Die Kernel-Parameter zum Setzen der Semaphor-Limits sind:
kernel.sem = SEMMSL SEMMNS SEMOPM SEMMNISEMMSL - max semaphores per arraySEMMNS - max semaphores system wideSEMOPM - max ops per semop callSEMMNI - max number of arrays
Ändern von Semaphor-Limits
Wenn ein Limit geändert werden muss, sollte berücksichtigt werden, dass (maximale Anzahl von Arrays) * (maximale Semaphore pro Array) > = (maximale Semaphore systemweit). Sie müssen nicht mehr Semaphore systemweit haben, wenn sie durch die Anzahl einer möglichen Anzahl von Arrays mit maximalen Semaphoren pro Array begrenzt sind.
Zum Beispiel:
# sysctl -a| grep kernel.semkernel.sem = 250 32000 32 128
In diesem Beispiel müssen wir die maximale Semaphor-Grenze pro Array von 128 auf 192 erhöhen. Die Max-Semaphore systemweit können auch erhöht werden auf 48000 ( 250*192 = 48000 >= 32000) oder als 32000 gehalten. In diesem Szenario wird es bei 32000 gehalten.
Um Kernel-Parameter dynamisch zu setzen, d.h. ohne Neustart des Servers.
# sysctl -w kernel.sem="250 32000 32 192"kernel.sem = 250 32000 32 192
Wenn alles wie erwartet mit dem System in Ordnung ist, ändern Sie den Kernel-Parameter, indem Sie ihn zur Datei /etc/sysctl hinzufügen.conf-Datei, um sicherzustellen, dass der Wert nach dem Neustart des Servers erhalten bleibt.
# cat /etc/sysctl.conf | grep kernel.semkernel.sem = 250 32000 32 192
Wenn Sie es direkt in der Datei festlegen möchten, ohne sysctl -w zu verwenden, müssen Sie die Datei neu laden:
# sysctl -p
Sie können die derzeit festgelegten Limits überprüfen, indem Sie:
# 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