CentOS 4 上反复出现 Apache 2.0.52 错误 - '无法创建'rewrite_log_lock''

CentOS 4 上反复出现 Apache 2.0.52 错误 - '无法创建'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+ GB 的可用空间,并且top和可用空间都报告 800+ MB(或 1.2 GB)

> 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

关于为什么这种情况会再次发生,以及如何预防/修复它,您有什么想法吗?

答案1

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,如果这不是服务器上的用户的名称,请更改它。

答案2

使用 awk 更简单:

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

答案3

xargs 似乎对我不起作用,因此在 bash 中我改为执行以下操作:

对于 x 在ipcs -s | grep apache | cut -b11-22;执行 ipcrm -s $x;完成

相关内容