Errore Apache 2.0.52 ricorrente su CentOS 4 – 'imansible creare `rewrite_log_lock`'

Ho visualizzato un problema ricorrente sul mio server web:

[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 

Finora, l'unica soluzione che ho trovato a questo quando succede è riavviare il mio server. Questo non è ideale: – \

Il riavvio di httpd non cancella l'errore. df indica che ho 20+ concerti gratuiti, e in top e gratuito entrambi segnalano 800+ megs (o 1,2 gig)

 > 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 

Qualche idea sul perché questo si ripresenta e come prevenire o risolvere il problema?

3 Solutions collect form web for “Errore Apache 2.0.52 ricorrente su CentOS 4 – 'imansible creare `rewrite_log_lock`'”

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

Apache Error: Nessun spazio rimasto sul dispositivo

Apache non si avvia e il registro degli errori contiene:

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

o

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

Dopo aver controllato il tuo disco dimostra che hai abbastanza spazio. Il problema è che apache non si è arrestato correttamente, e ha lasciato migliaia di semaforo-arrays restati, di properties; di utente 'apache'.

Correre:

 ipcs -s | grep apache 

Rimuovere questi semafori immediatamente dovrebbe risolvere il problema e permettere all'avvio di iniziare.

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

where apache è il proprietario del process apache, se questo non è il nome dell'utente sul server che lo modifica.

Il modo più semplice con awk:

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

Quel xargs non sembrava funzionare per me, quindi in bash ho fatto questo invece:

per x in ipcs -s | grep apache | cut -b11-22 ipcs -s | grep apache | cut -b11-22 ipcs -s | grep apache | cut -b11-22 ; fare ipcrm -s $ x; fatto

Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.