Fri, 2005-08-05 14:09 — carlos
When dealing with mem-leaks in my mod_perl-apps I ran into a curious apache-problem. After a while apache could not be started but failed with strange errors like:
[emerg] (28)No space left on device: Couldn't create accept lock
or
[crit] (28)No space left on device: mod_rewrite: could not create rewrite_log_lock Configuration Failed
or
[Wed Dec 07 00:00:09 2005] [error] (28)No space left on device: Cannot create SSLMutex
There was definitely enough space on the device where the locks are stored (default /usr/local/apache2/logs/). I tried to explicetely different Lockfiles using the LockFile-directive but this did not help. I also tried a non-default AcceptMutex (flock) which then solved the acceptlock-issue and ended in the rewrite_log_lock-issue.
Only reboot of the system helped out of my crisis.
Solution: There were myriads of semaphore-arrays left, owned by my apache-user.
ipcs -s | grep apache
Removing this semaphores immediately solved the problem.
ipcs -s | grep apache | perl -e 'while (<STDIN>) { @a=split(/\s+/); print `ipcrm sem $a[1]`}'
Comments
Finding used test equipment
Some changes required to work on Ubuntu 8.04
ipcs -s | grep www-data | sudo perl -alne 'qx(ipcrm -s $F[1])'1. The apache user iswww-datainstead ofapache2.ipcrmchanged its parameters format from "sem" to "-s" 3. Used sudo for the ipcrm 3. Just for fun, I tweaked the perl command line parameters to use auto-split and auto-line endingSuggested permanent fix
SSLMutex semhttp://www.modssl.org/docs/2.1/ssl_reference.html HTH, and Thanks again...thanks Solved
Thank you
Shell version
Thanks
thanks for your help
Re: Fix Apache - No space left on device: Couldn't create accept
ipcs -s | grep apache | perl -e 'while (<STDIN>) { @a=split(/\s+/); print `ipcrm sem $a[1]`}'[/quote] Great. You saved my live!!! (Rebooting was not an option for me). Just my two cents. Next the equivalent with bash+textutils instead of perl (yes, I don't like perl, it's so ugly to read):for ipsemId in $(ipcs -s | grep apache | cut -f 2 -d ' '); do ipcrm $ipsemId; doneHave a nice dayFix Apache - No space left on device: Couldn't create accept loc
Thanks !!!
correction
thanks fixed