Solr 中的查询超时

2022-01-15 00:00:00 lucene solr java

我通过自定义开发层对 solr 进行查询,并且在我的层中超时的少数查询仍在 solr 实例中.solr 中是否有一个参数可以用来使特定查询超时

I hitting queries to solr through a custom developed layer and few queries which i time out in my layer are still in the solr instance. Is there a parameter in solr which can be used to time out an particular query

推荐答案

如 中所述客户端断开连接后 Solr 查询是否继续? 和 写在 Solr 常见问题解答中

在内部,Solr 不会对任何请求进行超时 - 它允许更新和查询都需要花费多长时间才能完全处理.

Internally, Solr does nothing to time out any requests -- it lets both updates and queries take however long they need to take to be processed fully.

但在常见问题解答中的同一位置写入

But at the same spot in the FAQ is written

但是,用于运行 Solr 的 servlet 容器可能会对所有请求施加任意超时限制.如果您发现此值太低,请查阅您的 Serlvet 容器的文档.(在 Jetty 中,相关设置是maxIdleTime",以毫秒为单位)

However, the servlet container being used to run Solr may impose arbitrary timeout limits on all requests. Please consult the documentation for your Serlvet container if you find that this value is too low. (In Jetty, the relevant setting is "maxIdleTime" which is in milliseconds)

因此,您可以将容器配置为关闭长时间运行的请求,以便连接的 HTTPClients 接收关闭.

So you may configure your container to close a long-running request so that the HTTPClients connected receive a shutdown.

但这可能还不够,但 Solr 内部可能仍在工作,在您的服务器上产生负载.因此可以使用常用的timeAllowed参数.

However that may not be enough, Solr could internally still be working though, generating load on your Server. Therefore the common timeAllowed parameter may be used.

timeAllowed - 此参数指定允许完成搜索的时间量(以毫秒为单位).如果此时间在搜索完成之前到期,将返回任何部分结果.

timeAllowed - This parameter specifies the amount of time, in milliseconds, allowed for a search to complete. If this time expires before the search is complete, any partial results will be returned.

在每个请求中或在您的 solrconfig.xml 中配置为默认值.

Either with each request or configured as default in your solrconfig.xml.

<requestHandler name="standard" class="solr.StandardRequestHandler" default="true">
    <lst name="defaults">
        <!-- other parts left out -->
        <!-- timeout (in milliseconds) -->
        <int name="timeAllowed">5000</int>
    </lst>
</requestHandler>

相关文章