es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Fuga de memoria en Tomcat 9 con PoolingHttpClientConnectionManager y NioEndpoint.

Estoy intentando analizar los picos de CPU y memoria en mi sistema en los pods de Kubernetes. Después de realizar la prueba de carga, cuando el uso de memoria no disminuyó, realicé una volcado de montón y lo analicé usando MAT.
Sospechoso principal de fuga

Estructura de clases salientes

Soy nuevo en esta base de código. Por lo que puedo entender, utiliza PoolingHttpClientConnectionManager que utiliza NioEndpoint para establecer un grupo de conexiones. Utiliza FeignClient que, a su vez, utiliza ApacheHttpClient que se configura con HttpClient con un gestor de conexiones. Veo que los hilos se están acumulando y no puedo comprender por qué. Cualquier ayuda con esto es muy apreciada.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Según el análisis del volcado de memoria utilizando MAT, parece que el principal sospechoso de la fuga es la clase org.apache.tomcat.util.net.NioEndpoint. La estructura de clases saliente muestra que es utilizada por org.apache.tomcat.util.net.NioSelectorPool y org.apache.tomcat.util.net.NioChannel.

    Además, parece que la base de código utiliza el PoolingHttpClientConnectionManager, el cual depende de NioEndpoint para establecer un grupo de conexiones. Adicionalmente, se utiliza FeignClient, que utiliza ApacheHttpClient configurado con un HttpClient que tiene un gestor de conexiones.

    Basándose en el apilamiento de hilos, es probable que haya un problema en la forma en que se están gestionando las conexiones, lo que posiblemente provoque que las conexiones no se liberen o cierren correctamente. Se recomienda investigar más a fondo la base de código para comprender cómo se utilizan PoolingHttpClientConnectionManager y NioEndpoint, y asegurarse de una gestión adecuada de las conexiones.

Comments are closed.