首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PoolingHttpClientConnectionManager和NioEndpoint的Tomcat 9内存泄漏

使用PoolingHttpClientConnectionManager和NioEndpoint的Tomcat 9内存泄漏
EN

Stack Overflow用户
提问于 2021-12-09 04:08:48
回答 1查看 372关注 0票数 0

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

我是这个代码库的新手。据我所知,它使用PoolingHttpClientConnectionManager,它使用NioEndpoint来建立一个连接池。使用FeignClient,而后者又使用ApacheHttpClient,后者与带有连接管理器的HttpClient一起设置。我看到线程在堆积,我不知道为什么。在这方面的任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

发布于 2021-12-09 10:03:16

PoolingHttpClientConnectionManager (来自Apache HttpComponents)不使用NioEndpoint (来自Tomcat),它只能用于传入连接(HTTP套接字)。

您观察到的500个SecureNioChannel实例是一个缓冲池,可以同时提供多达500个TLS连接。它们不是,不是泄漏,而是一种减少为请求服务所必需的垃圾收集量的特性。

您可以通过多个连接器选项(cf )来控制这个池。文档):

  • socket.bufferPool配置池的大小。如果将其设置为0,则不会创建缓存(但每个请求都将创建一个新的SecureNioChannel对象),
  • socket.appReadBufSizesocket.appWriteBufSize配置每个缓冲区的大小。SecureNioChannel使用每种类型的两个缓冲区。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70284593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档