Семафоры 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 -l1089
Значение можно увеличить, например до 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
Читайте также про файловые дескрипторы