На моем веб-сервере постоянно возникает проблема:
[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; сделано