Se o valor RSS do processo (obtido do comando top ou ps) aumentar rapidamente, ele pode ser tratado como vazamento de memória. Suponha que haja menos provisão para modificar o código e nenhum suporte adequado para instalar novos utilitários para rastrear o uso da memória.
Como é um aplicativo proprietário, não posso fornecer o código aqui. Eu reduzi a questão. Cada conexão openSSL aberta e fechada entre o daemon cliente e servidor estava introduzindo alguns vazamentos de memória. O daemon do servidor é um servidor típico que continua aguardando uma conexão, uma vez que a conexão é aceita, ele cria um encadeamento para manipular a solicitação do cliente.
openSSL1.0.1 é a versão.
De acordo com o link: link
A limpeza a seguir foi adicionada ao destruidor da classe do servidor, pois estou interessado no lado do servidor.
void ServerClass::doCleanUp()
{
CRYPTO_cleanup_all_ex_data();
ERR_free_strings();
ERR_remove_state(0);
ERR_remove_thread_state(NULL);
CRYPTO_set_locking_callback(NULL);
CRYPTO_set_id_callback(NULL);
}
Depois de realizar o teste de abertura e fechamento da conexão para diferentes iterações, há alguma diferença no valor de RSS, ou seja, (RSS_value_after_test_completion - RSS_value_at_startup) é positivo. Então, essa diferença positiva pode ser tratada como vazamentos de memória?
Novamente, de acordo com o link stackoverflow, há o conceito de limpeza em nível de aplicativo e limpeza em nível de encadeamento. Na minha solução anterior eu tinha usado EVP_cleanup (), ele criou problemas em outros testcases, então o mesmo foi revertido.
Não consigo realizar atividades relacionadas a Unload of DH param já que o servidor deve estar sempre ativo.
Estou faltando alguma coisa? Mais orientações serão apreciadas.
Algumas observações:
Observação 1:
Quando executo testes de abertura e fechamento para 5, 10 e 30 iterações, observei que, quando o valor RSS do processo atinge algum valor (37,7 MB), ele nunca aumenta desse valor. NOTA: - As ordens de iteração de teste podem não ser as mesmas mencionadas.
Observação 2:
Com uma iteração de teste de abertura e fechamento, pude ver o valor do RSS aumentar em torno de 7 MB.
Observação 3:
A pessoa que está testando está realizando o teste para uma iteração específica, digamos 100, portanto, há sempre uma diferença positiva para o valor de RSS e a afirmação de que há vazamento.