Estamos com um problema no nosso site de produção, onde nossas instâncias do apache estão misteriosamente sufocadas. O servidor nunca falha completamente, apenas o apache fica sem recursos.
Olhando para a situação, localizei-a em vários processos do Apache, ficando presos para sempre no modo flock_lock_file_wait. Uma vez que um processo fica preso nesse modo, nunca é sair. Então, o processo mestre gera outra criança, que eventualmente fica presa nesse modo novamente, até que finalmente ficamos sem as crianças disponíveis e o site pára.
O que eu encontrei usando o lsof em um desses processos 'travados' é que eles estão presos em arquivos de sessão PHP5 deletados. Aqui está uma saída do lsof em um processo travado:
apache2 32489 www-data 36u REG 8,1 195 5974866 / var / lib / php5 / sess_bd5afe5ad8b05531d48a7e6f81638faa (suprimido)
Entro nesse diretório e, sim, esse arquivo desapareceu. Portanto, o processo do Apache está preso tentando gravar (ou ler) dados da sessão de um arquivo excluído.
Minha pergunta é: o que diabos eu faço agora? Isso parece algo em que o Apache deveria saber de alguma forma não ficar preso, mas eu não sei como dizer para apenas seguir em frente sem reiniciar o Apache, o qual nós estamos tendo que fazer quase todos os dias agora.
Alguma idéia de onde eu posso ir daqui?
Tags apache-2.2