gpt4 book ai didi

java - 什么启动了 Connection evictor 线程以及如何避免这些线程累积?

转载 作者:行者123 更新时间:2023-12-03 20:49:55 24 4
gpt4 key购买 nike

我的 Java 程序在 linux 下运行,并使用 SOLR 7.4 索引几个目录(通过 samba 从不同的 Windows 服务器安装)。它一个接一个地更新不同的索引(每个索引目录一个索引)并无限循环。
在我的开发机器上运行时,我将 VisualVM 连接到它并看到线程数不断增加:
VisualVM shows increasing number of threads
我从 this post 了解到它与内存泄漏有关(我也在试图找到)。
VisualVM 显示 Connection evictor 线程不断累积并且都处于 sleep 状态:
Sleepling connection evictor threads accumulate
但是this post告诉 sleep 线程不会给系统增加任何负载(因为它们是空闲的),所以它们不会导致内存泄漏。
所以我的问题是:
我是否应该将这种行为视为一个问题,如果是,我应该在源代码中查看哪里,因为我不使用 http 连接(我读到使用连接驱逐器),因为所有目录都是由操作系统本地安装的?
任何帮助表示赞赏;-)

最佳答案

简要回答我自己的问题:
是的,拥有如此多的连接驱逐线程是生产中的一个问题,因为我认为它会在一段时间后导致 OOM。
对我来说,问题发生是因为我创建了太多 SolrClient s 而需要一个(所有内核都在同一台服务器上)。
所以代替

solrClient = new HttpSolrClient.Builder(
getSolrHomePath() + "/" + getCoreName()
).
build();
哪里 getSolrHomePath()返回到 solr-X.Y.Z/server/solr 的路径.
我现在用
commonSolrClient = new HttpSolrClient.Builder(
getSolrHomePath()
).
build();
当我需要时 query一个核心 我将核心名称作为第一个参数传递给 query function .添加/删除方法相同!

关于java - 什么启动了 Connection evictor 线程以及如何避免这些线程累积?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63414102/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com