Назад | Перейти на главную страницу

Повторяющаяся ошибка Apache 2.0.52 в CentOS 4 - 'не удалось создать' rewrite_log_lock ''

На моем веб-сервере постоянно возникает проблема:

[Sun May 16 03:10:19 2010] [crit] (28)No space left on device: mod_rewrite: could not create rewrite_log_lock
Configuration Failed
[Sun May 16 04:10:05 2010] [crit] (28)No space left on device: mod_rewrite: could not create rewrite_log_lock
Configuration Failed
[Sun May 16 05:10:04 2010] [crit] (28)No space left on device: mod_rewrite: could not create rewrite_log_lock
Configuration Failed
[Sun May 16 05:17:13 2010] [crit] (28)No space left on device: mod_rewrite: could not create rewrite_log_lock
Configuration Failed

Пока что единственное исправление, которое я нашел, когда это происходит, - это перезагрузка моего сервера. Это не идеально: - \

Перезапуск httpd не сбрасывает ошибку. df означает, что у меня есть 20+ бесплатных концертов, и top и бесплатно оба сообщают 800+ мегабайт (или 1,2 гига)

> df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/simfs             40G   18G   23G  44% /

#

> free
             total       used       free     shared    buffers     cached
Mem:       1474560     300832    1173728          0          0          0
-/+ buffers/cache:     300832    1173728

Есть идеи о том, почему это повторится и как это предотвратить / исправить?

http://devtime.blogspot.com/2008/02/apache-error-no-space-left-on-device.html

Ошибка Apache: на устройстве не осталось места

Apache не запускается, а журнал ошибок содержит:

[emerg] (28)No space left on device: Couldn't create accept lock

или

[crit] (28)No space left on device: mod_rewrite: could not create rewrite_log_lock Configuration Failed

После проверки вашего диска он показывает, что у вас достаточно места. Проблема в том, что apache не завершил работу должным образом, и остались мириады семафорных массивов, принадлежащих пользователю apache.

Бегать:

ipcs -s | grep apache

Немедленное удаление этих семафоров должно решить проблему и позволить apache запуститься.

ipcs -s | grep apache | perl -e 'while () { @a=split(/\s+/); print `ipcrm sem $a[1]`}'

где apache является владельцем процесса apache, если это не имя пользователя на вашем сервере, измените его.

С awk проще:

for id in $(ipcs -s | grep 'apache'| awk '{ print $2 }'); do ipcrm sem $id; done

Этот xargs, похоже, не работал для меня, поэтому в bash я сделал следующее:

для x в ipcs -s | grep apache | cut -b11-22; сделать ipcrm -s $ x; сделано