Ошибка No space left on device: Couldn’t create accept lock


В один прекрасный момент на рабочем сервере вырубился Apache и больше не хотел запускаться. Т.к. апач стоит в связке с nginx – первый репортовал ошибку, что не может отдать запрос дальше (т.е. апачу).
После старта руками сервер Apache выдавал сообщение “failed”.

В логах при этом шли записи /var/log/httpd/error.log:

[emerg]  (28)No space left on device: Couldn't create accept lock (/etc/httpd/logs/accept.lock)

Как закончилось место? Смотрим df – и видим, что у нас свободно 720GB. Копаем дальше и выясняем, что эта ошибка довольно редкая, в основном связана с неосвобождением системой семафоров, которые выделяет для себя apache. Выполните команду:
# ipcs -s

------ Semaphore Arrays --------
key        semid      owner      perms      nsems
0x00000000 0          root       600        1
0x00000000 65537      root       600        1
0x0000014c 98306      root       600        1
0x00000000 163843     apache     600        1
0x00000000 196612     apache   600        1
0x00000000 229381    apache 600        1
0x00000000 262150     apache 600        1
0x00000000 294919     apache 600        1

При попытке стартовать веб-сервис, система хочет выделить семфоры, но операционная система сообщая о том, что свободного место в таблице нет, отсюда и сообщение No space left on device.

Если ситуация повторяется – можно чистить семафоры автоматически скриптом запихнув его в крон.

#!/bin/bash
sems=$(ipcs -s | grep apache | awk --source '/0x0*.*[0-9]* .*/ {print $2}')
for sem in $sems
do
  ipcrm sem $sem
done

Измените имя пользователя apache на свое, если у вас Apache запускается от другого имени пользователя.



Поделиться с друзьями:

Другие публикации:

Написать комментарий через:

 
       
  • ВКонтакте
  •        
  • Локальный блог
  •  
 
 

Ваш отзыв

Имя *

Почта (скрыта) *

Сайт

Напишите цифрами двa вoceмь двa *

Сообщение

 
Статьи пользователей на ArtKiev Design Studio