2012-01-05 67 views
2

我有一台托管搜索的生产Web服务器,以及托管Solr搜索服务器的另一台计算机(位于同一个房间内的子网上,因此没有网络问题)。所有的罚款> 90%的时间,但我一直得到一小部分The operation has timed out错误。使用SolrNet向Solr服务器发送间歇连接超时

我增加了超时的SolrNet init进程秒(!)

SolrNet.Startup.Init<SolrDataObject>(
    new SolrNet.Impl.SolrConnection(
     System.Configuration.ConfigurationManager.AppSettings["URL"] 
    ) {Timeout = 30000} 
); 

...但所发生的一切是我开始的,而不是Unable to connect to the remote server这让我之前看到这条消息。这似乎对超时错误的数量没有影响。

我可以看到什么任何日志(相信我,我已经看了!),并明确我的配置是正确的,因为它工作的大部分时间。任何人有任何想法我怎么能找到关于这个问题的更多信息?

编辑:

我已经从2个连接的HttpRequest的数量提高到现在的“大量”(我看到多达10个连接) - 但是这已经对这个问题没有明显的效果。

防火墙设置为允许两台机器之间的任何连接。

我们还检查了硬件与我们的服务器主机,并没有问题的连接,根据他们。

编辑2:

我们看到的仍然是这个问题。

我们现在正在记录超时时间,他们大多只超过30秒 - 这是SolrNet层的超时时间;但是有些是20秒 - 这是Tomcat默认的超时时间 - 这表明它是机器之间的实际连接。

不知道该从哪里出发,但是 - 他们在一个VLAN上,我们特别使用VLAN地址 - 来自ping的响应时间始终为1ms。

+1

你提交/优化策略是什么? – 2012-01-05 12:48:01

+0

希望这可以回答你的问题:我们每15分钟做一次dataimporthandler增量;并在一夜之间全额进口。但我不做任何优化。我现在要去读一读......你会有什么建议? – 2012-01-09 09:05:56

+0

嗯,有一个阅读,并刚刚添加了预定更新?优化=每天晚上完全导入后真...但TBH我不认为优化会做很多考虑超时超过30s,通常这返回远远低于一秒。 – 2012-01-09 09:24:48

回答

2

没有更多的信息,我只能猜测的几个可能的原因:

+0

我没有复制示例querystring,因为它很大,很多FQ和大量的Facet.Queries。不过,QTime在100-200之间下滑。我已将行设置为20,因此不会返回大量文档。感谢您的链接。将检查他们。 – 2012-01-09 14:44:23

+0

我对改变ServicePoint.ConnectionLimit感兴趣 - 但不确定使用SolrNet做到这一点的最佳方式?只要把它放在顶部:System.Net.ServicePointManager.DefaultConnectionLimit = 200; SolrNet.Startup.Init (new SolrNet.Impl.SolrConnection(System.Configuration.ConfigurationManager.AppSettings [“URL”]){Timeout = 30000}); ? – 2012-01-09 14:59:37

+0

@IngGrainger是的,或者你可以在你的web.config中设置它。 – 2012-01-09 15:00:22

0

尝试在.net中设置。

ServicePointManager.Expect100Continue = false;

或本

ServicePointManager.SetTcpKeepAlive(true, 200000, 200000); - 这将请求发送到服务器来保持连接。

+0

经过相当广泛的阅读 - 我认为这可能是Java运行的方式。我认为它会在回收内存或类似的东西时停止服务请求......不过,我会在下一次对服务器进行更改时对其进行调查 - 感谢您的建议。 – 2013-11-08 16:41:46

相关问题