Geek Diary
post wyjaśnia, w jaki sposób można zmienić limity semaforów jądra na serwerze CentOS/RHEL.
parametry jądra ustawiające limity semaforów
parametry jądra ustawiające limity semaforów to:
kernel.sem = SEMMSL SEMMNS SEMOPM SEMMNISEMMSL - max semaphores per arraySEMMNS - max semaphores system wideSEMOPM - max ops per semop callSEMMNI - max number of arrays
zmiana limitów semaforów
jeśli limit musi zostać zmieniony, należy wziąć pod uwagę, że (max liczba tablic)*(max semafory na tablicę) >= (Max semafory systemowe). Nie ma potrzeby posiadania większej liczby semaforów w całym systemie, jeśli jest to ograniczone przez liczbę możliwych tablic z maksymalnymi semaforami na to.
na przykład:
# sysctl -a| grep kernel.semkernel.sem = 250 32000 32 128
w tym przykładzie musimy zwiększyć maksymalny Limit semaforów na tablicę ze 128 do 192. Max semafory systemowe można również zwiększyć do 48000 ( 250*192 = 48000 >= 32000) lub utrzymywane jako 32 tys. W tym scenariuszu utrzymuje się na poziomie 32 tys.
aby ustawić parametr jądra dynamicznie tzn. bez konieczności restartu serwera.
# sysctl -w kernel.sem="250 32000 32 192"kernel.sem = 250 32000 32 192
jeśli wszystko jest w porządku z systemem zgodnie z oczekiwaniami, zmodyfikuj parametr jądra, dodając go do / etc / sysctl.plik conf zapewniający utrzymanie wartości po ponownym uruchomieniu serwera.
# cat /etc/sysctl.conf | grep kernel.semkernel.sem = 250 32000 32 192
jeśli zdecydujesz się ustawić go bezpośrednio w pliku bez użycia sysctl-w, będziesz musiał ponownie załadować plik:
# sysctl -p
możesz zweryfikować limity aktualnie ustawione przez:
# 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