Erro recorrente do Apache 2.0.52 no CentOS 4 - 'não foi possível criar' rewrite_log_lock ''

2

Tenho visto um problema recorrente no meu servidor da 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

Até agora, a única correção que encontrei para isso quando aconteceu é reiniciar meu servidor. Isso não é ideal: - \

Reiniciar httpd não apaga o erro. df indica que eu tenho mais de 20 shows gratuitos, e top e gratuitos relatam mais de 800 megas (ou 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

Alguma idéia de por que isso ocorreria e como evitar / corrigir isso?

    
por warren 16.05.2010 / 07:45

3 respostas

3

link

Erro Apache: não há espaço no dispositivo

O Apache não inicia e o log de erros contém:

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

ou

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

Após verificar seu disco, mostra que você tem muito espaço. O problema é que o apache não foi desligado corretamente, e restam milhares de matrizes de semáforos, de propriedade do usuário 'apache'.

Executar:

ipcs -s | grep apache

Remover esses semáforos imediatamente deve resolver o problema e permitir que o apache seja iniciado.

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

em que apache é o proprietário do processo do apache, se esse não for o nome do usuário em seu servidor, altere-o.

    
por 16.05.2010 / 07:54
1

Muito mais simples com o awk:

for id in $(ipcs -s | grep 'apache'| awk '{ print $2 }'); do ipcrm sem $id; done
    
por 12.10.2015 / 15:02
0

Esse xargs não parece funcionar para mim, então no bash eu fiz isso:

para x em ipcs -s | grep apache | cut -b11-22 ; do ipcrm -s $ x; feito

    
por 11.03.2015 / 14:51