mod_perl scripts param de ver o sistema de arquivos depois de algum tempo

0

Eu uso scripts mod_perl sob o Apache 2.4.18 em um VPS no Ubuntu 16.04. Os scripts abrem arquivos do disco (modelos de página da web). De vez em quando, eles param de ver esses arquivos, o log de erros do servidor está cheio dos seguintes erros:

Erro do arquivo [TIME] [: error] [pid PID: tid TID] - FILENAME: não encontrado \ n

Essas mensagens são geradas pelo pacote de modelos quando a função Perl open() retorna false. Após a reinicialização do Apache, os arquivos ficam visíveis novamente, mas apenas por algum tempo. Depois de um tempo, o problema reaparece.

Qual pode ser o motivo de tal comportamento?

    
por Ruslan Batdalov 12.03.2017 / 08:41

1 resposta

2

Talvez mod_perl / apache não esteja fechando os filehandles corretamente. Depois de algum tempo, quando a quantidade máxima de arquivos abertos for atingida (1024 soft / 4096 difícil, ver ulimit -Sn;ulimit -Hn ), o reinício do apache fecha todos os handles obsoletos.

Na próxima vez em que o erro ocorrer, você pode investigar essa teoria obtendo o pid do apache / perl.

# ps aux | grep apache

ou

# pidof apache

ou módulo perl se tiver um processo próprio ..

exemplo de saída:

28294

Listar arquivo aberto por um PID

# lsof -p 28294
# lsof -a -p 28294
# counting
# lsof -a -p 28294| wc -l

ou

# cd /proc/28294/fd
# ls -l | less
# count open files with
# ls -l | wc -l
    
por 12.03.2017 / 10:37