Der Beitrag erklärt, wie Kernel-Semaphor-Limits in einem CentOS/RHEL-Server geändert werden können.
Kernel-Parameter zum Festlegen von Semaphor-Grenzen
Die Kernel-Parameter zum Setzen der Semaphor-Grenzen sind:
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
Semaphorgrenzen ändern
Wenn ein Limit geändert werden muss, sollte berücksichtigt werden, dass (max. Anzahl von Arrays)*(max. Semaphore pro Array)>=(max. Semaphore systemweit) . Keine Notwendigkeit, mehr Semaphore systemweit zu haben, wenn sie durch die Menge einer möglichen Anzahl von Arrays mit maximal Semaphoren pro Einheit begrenzt sind.
Zum Beispiel:
# sysctl -a| grep kernel.sem kernel.sem = 250 32000 32 128
Für dieses Beispiel müssen wir die maximale Anzahl von Semaphoren pro Array von 128 auf 192 erhöhen. Die systemweite maximale Anzahl von Semaphoren kann auch auf 48000 erhöht werden (250*192 =48000>=32000) oder auf 32000 gehalten werden wird auf 32000 gehalten.
Kernel-Parameter dynamisch setzen, d. h. ohne dass ein Server-Neustart erforderlich ist.
# 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 die Kernelparameter, indem Sie sie zur Datei /etc/sysctl.conf hinzufügen, um sicherzustellen, dass der Wert nach dem Neustart des Servers erhalten bleibt.
# cat /etc/sysctl.conf | grep kernel.sem kernel.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 = 192 max semaphores per array = 250 max semaphores system wide = 32000 max ops per semop call = 32 semaphore max value = 32767
Ein Semaphor ist wie ein Zähler, der verwendet wird, um den Zugriff auf gemeinsam genutzte Ressourcen durch mehrere Prozesse zu steuern. Es wird häufig als Sperrmechanismus verwendet, um zu verhindern, dass Prozesse auf eine bestimmte Ressource zugreifen, während ein anderer Prozess Operationen darauf ausführt. Der Semaphorwert kann bis zum Maximum erhöht oder verringert werden, das durch die Variable SEMVMX, „semaphore max value“, festgelegt wird.