如何更改耶拿的路线连接数量,超过5个

时间:2018-04-04 23:00:28

标签: connection-pooling jena

我想知道如何修改jena中的路径连接数,当我尝试进行超过5次查询时,线程被锁定。我尝试在QueryEngineHTTP中修改一些参数,但它不起作用(我尝试了qexec.addparam(“max connections”,10)和其他变种)。该项目是关于获取同义词库中的每个节点(与属性连接的节点更窄)所以我使用了递归函数,并且在5个递归循环之后我被锁定了。非常感谢!

parentData

1 个答案:

答案 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()上调用ResultSetclose()也可能持有对该连接的引用。因此,当您完成结果集或查询执行时,显式调用close()永远不会受到伤害。

由于您正在进行递归调用,因此您可能希望在递归之前调用boto3,否则如果您的层次结构非常深,您最终仍会遇到此问题。由于您似乎可能会对每个结果进行递归,因此您可能无法立即关闭它,因此实际获取结果集的副本可能很有用,这样您就可以在使用ResultSetFactory.copyResults()循环结果之前关闭执行。