Семафоры Linux

Семафоры Linux — средство ОС для синхронизации потоков и процессов. На практике сталкиваться с этим понятием приходится когда отказывается запускаться Apache



Семафоры Linux и что делать если они заканчиваются

О том, что закончились семафоры могут говорить такие записи в логах веб-сервера:


[Fri Jan 26 12:34:31.540156 2019] [core:emerg] pid 25695No space left on device: AH00023: Couldn't create the ssl-cache mutex
AH00016: Configuration Failed

No space left on device


Apache при этом перестает работать и не запускается, а если запускается, то работает нестабильно.

Сколько семафоров используется можно посмотреть выполнив


ipcs -s | wc -l
1089


Значение можно увеличить, например до 10240


echo «250 256000 32 10240» > /proc/sys/kernel/sem

Также семафоры можно чистить

В цикле for:


for i in $(ipcs -s | grep 'www-data' | awk '{print $2}'); do ipcrm -s «$i»; done

Разово только для определенного пользователя (www-data):


ipcs -s | grep www-data | awk '{ print $2 }' | xargs -n1 ipcrm sem


Или можно добавить параметры в /etc/sysctl.conf

kernel.msgmni = 512 kernel.sem = 250 128000 32 10240


Если меняется /etc/sysctl.conf, то нужно перезагрузить машину или выполнить
sysctl -p


Читайте также про файловые дескрипторы