Memtrack – Diagnóstico de Aplicações PHP

Adaptado de: http://www.leftjoin.net/2011/11/php-application-diagnostics-memtrack/

Sobre o Memtrack

Perfilamento de aplicações ajudam a determinar os gargalos e possíveis problemas durante o desenvolvimento. Mas às vezes é preciso diagnosticar problemas no ambiente de produção. Frequentemente enfrentamos problemas com funções e métodos utilizando muita memória.

Se quisermos rastrear funções que estão consumindo muita memória, podemos utilizar uma extensão do PHP chamada Memtrack. Com ela podemos definir níveis aceitáveis de limite de memória e, quando alguma função ultrapassá-lo, um aviso será enviado.

Instalação e configuração

A Memtrack é uma extensão PECL, portanto para instalá-la é bastante simples:

pecl install memtrack

Para configurar também é bem tranquilo:

extension=memtrack.so
memtrack.enabled = 1 ; habilita a extensão
memtrack.soft_limit = int ; utilize um número para o limite de memória

Mais exemplos de configuração podem ser encontrados no manual do PHP.

Segue um exemplo de configuração:

extension=memtrack.so
memtrack.enabled = 1 ; habilita a extensão
memtrack.soft_limit = 1M ; define 1mb como limite de memória 

Erro gerado

Vamos utilizar a seguinte função para “detonar” a memória:

function muitoConsumoDeMemoria() {
    $algumaCoisa = array();
    for ($i = 0; $i < 10000; $i++) {
    	$algumaCoisa[] = sha1('a');
    }
    return $algumaCoisa;
}

$algo = muitoConsumoDeMemoria();

Quando essa função for executada, irá gerar um aviso no Memtrack.

[memtrack] [pid 10408] user function muitoConsumoDeMemoria() executed in PATH on line 10 allocated 1572864 bytes

Nesse log é possível encontrar informações sobre o processo, a função (nome e informações), caminho do arquivo, linha e uso de memória.

Conclusão

Com o perfilamento de aplicações é possível identificar onde a aplicação torna-se mais crítica.

Espero que seja bem útil e que, a partir de agora, suas aplicações sejam otimizadas!

Um forte abraço a todos e fiquem com Deus!


Deixe uma resposta