Coredumps em sistemas Unix
Autor: Fernando Oliveira Carvalho | Publicado: 2013-08-09T10:52:00-03:00



Coredump é um arquivo especial que representa a imagem da memória de um processo. Muitos sistemas operacionais têm a capacidade de salvar um dump de memória quando o aplicativo falha. O despejo do núcleo é uma parte importante de diagnosticar a causa do problema, já que os dados do pedido foi acessado no momento em que está no dump de memória, juntamente com informações sobre em que parte da aplicação estava funcionando no momento do problema.



Existem vários requisitos de configuração que devem ser cumpridas para que o sistema operacional salve um dump de memória quando a ocorre falhas no IBM HTTP Server. Abaixo, alguns requisitos de configurações utilizadas.

AIX

Modificar o arquivo httpd.conf e definir em qual diretórios os logs do &nbsp;CoreDumpDirectory serão salvos.

CoreDumpDirectory / tmp


Nota: Em raras situações, os arquivos podem ser maiores do que 2GB. Eles vão ser truncado a menos que o sistema de arquivos tenha suporte de arquivo de grande porte. &nbsp;Por padrão, sistemas de arquivos JFS não suportam tais arquivos; suporte a arquivos grandes tem que ser habilitado explicitamente quando o filesystem é criado. Além disso, verifique com o comando ulimit-f se seus processos do IHS são maiores do que 1GB para evitar que os arquivos sejam truncados.


1. Pare o HTTP Server2. Altere os parâmetros da profile para:# ulimit -c unlimited# ulimit -f unlimited3. Inicie o HTTP ServerVerifique o log do IBM HTTP Server e certifique-se que a mensagem abaixo não está sendo exibida.


[notice] Core file limit is 0; core dumps will be not be written for server crashes
[notice] CoreDumpDirectory not set; core dumps may not be written for child process crashes

Solaris

Modificar o arquivo httpd.conf e definir em qual diretórios os logs do &nbsp;CoreDumpDirectory serão salvos.

CoreDumpDirectory / tmp


Nota: No Solaris, o dietório / tmp é muitas vezes montado em espaço de paginação (dispositivo de swap). Se houver uma potencial escassez de espaço de paginação, crie outro diretório em um sistema de arquivo físico, certifique-se de que o servidor web ID de usuário possa escrever neste diretório e defina CoreDumpDirectory para apontar para o novo diretório.

Execute o comando coreadm para configurar o sistema operacional para escrever core dumps.

# coreadm -e global-setid -e proc-setid -e global

1. Pare o IBM HTTP Server
2. Altera o parâmetro na profile para:

# ulimit -c unlimited

3. Inicie o IBM HTTP Server

Verifique o log do IBM HTTP Server e certifique-se que a mensagem abaixo não está sendo exibida.

[notice] Core file limit is 0; core dumps will be not be written for server crashes
[notice] CoreDumpDirectory not set; core dumps may not be written for child process crashes

Linux

Modificar o arquivo httpd.conf e definir em qual diretórios os logs do &nbsp;CoreDumpDirectory serão salvos.

CoreDumpDirectory / tmp

1. Pare o IBM HTTP Server
2. Incluir na /root/.bashrc o parâmetro

# ulimit -c unlimited

3. Inicie o IBM HTTP Server

Verifique o log do IBM HTTP Server e certifique-se que a mensagem abaixo não está sendo exibida.

[notice] Core file limit is 0; core dumps will be not be written for server crashes
[notice] CoreDumpDirectory not set; core dumps may not be written for child process crashes