我试图分析我的系统中的cpu和内存尖峰在库伯内特斯吊舱。在运行负载测试之后,当内存使用量没有下降时,我进行了堆转储并使用MAT进行了分析。


我是这个代码库的新手。据我所知,它使用PoolingHttpClientConnectionManager,它使用NioEndpoint来建立一个连接池。使用FeignClient,而后者又使用ApacheHttpClient,后者与带有连接管理器的HttpClient一起设置。我看到线程在堆积,我不知道为什么。在这方面的任何帮助都是非常感谢的。
发布于 2021-12-09 10:03:16
PoolingHttpClientConnectionManager (来自Apache HttpComponents)不使用NioEndpoint (来自Tomcat),它只能用于传入连接(HTTP套接字)。
您观察到的500个SecureNioChannel实例是一个缓冲池,可以同时提供多达500个TLS连接。它们不是,不是泄漏,而是一种减少为请求服务所必需的垃圾收集量的特性。
您可以通过多个连接器选项(cf )来控制这个池。文档):
socket.bufferPool配置池的大小。如果将其设置为0,则不会创建缓存(但每个请求都将创建一个新的SecureNioChannel对象),socket.appReadBufSize和socket.appWriteBufSize配置每个缓冲区的大小。SecureNioChannel使用每种类型的两个缓冲区。https://stackoverflow.com/questions/70284593
复制相似问题