我想知道如何修改jena中的路径连接数,当我尝试进行超过5次查询时,线程被锁定。我尝试在QueryEngineHTTP中修改一些参数,但它不起作用(我尝试了qexec.addparam(“max connections”,10)和其他变种)。该项目是关于获取同义词库中的每个节点(与属性连接的节点更窄)所以我使用了递归函数,并且在5个递归循环之后我被锁定了。非常感谢!
parentData
答案 0 :(得分:2)
Apache Jena使用的默认HttpClient
设置每个路由最多有5个连接(请参阅code)
您需要通过创建所需的HttpClient
然后使用HttpOp.setDefaultHttpClient()
方法将其设置为默认客户端来配置默认HttpClient
实例。
有关如何正确配置客户端的信息,请参阅HttpClient Connection Management文档。您可以使用上述代码链接作为基础并进行相应修改。例如,每个路由有20个最大连接数,总数为100个:
HttpClient client =
HttpClientBuilder.create()
.useSystemProperties()
.setRedirectStrategy(new LaxRedirectStrategy())
.setMaxConnPerRoute(20)
.setMaxConnTotal(100);
HttpOp.setDefaultHttpClient(client);
请注意,您还需要确保正确释放连接,我看到您在QueryExecution
上使用try-with-resources,这会自动调用close()
执行释放底层连接。但是你永远不会在close()
上调用ResultSet
,close()
也可能持有对该连接的引用。因此,当您完成结果集或查询执行时,显式调用close()
永远不会受到伤害。
由于您正在进行递归调用,因此您可能希望在递归之前调用boto3
,否则如果您的层次结构非常深,您最终仍会遇到此问题。由于您似乎可能会对每个结果进行递归,因此您可能无法立即关闭它,因此实际获取结果集的副本可能很有用,这样您就可以在使用ResultSetFactory.copyResults()
循环结果之前关闭执行。