我有一个托管搜索的生产网络服务器,以及托管Solr搜索服务器的另一台机器(位于同一房间的子网上,因此没有网络问题)。一切都很好> 90%的时间,但我一直得到少量的The operation has timed out
错误。
我已将SolrNet init中的超时时间增加到 30 秒(!)
SolrNet.Startup.Init<SolrDataObject>(
new SolrNet.Impl.SolrConnection(
System.Configuration.ConfigurationManager.AppSettings["URL"]
) {Timeout = 30000}
);
...但是所有发生的事情都是我开始收到此消息而不是之前看过的Unable to connect to the remote server
。它似乎对超时错误的数量没有任何影响。
我可以在任何日志中看到 nothing (相信我,我看过了!),显然我的配置是正确的,因为它在大多数时间都有效。任何想法如何能找到关于这个问题的更多信息?
修改
我现在已经将HttpRequest连接的数量从2增加到“大数”(我看到多达10个连接) - 但这对此问题没有明显的影响。
防火墙设置为允许两台计算机之间的任何连接。
我们还使用我们的服务器主机检查了硬件,并且连接没有问题。据他们说。
编辑2:
我们仍然看到这个问题。
我们现在正在记录超时,它们大多只是超过30秒 - 这是SolrNet层的超时;但有些是20秒 - 这是Tomcat的默认超时时间 - 这表明它们是机器之间实际连接的一部分。
不知道从哪里开始 - 他们在VLAN上我们专门使用VLAN地址 - ping的响应时间总是<1ms。
答案 0 :(得分:2)
如果没有更多信息,我只能猜出几个可能的原因:
答案 1 :(得分:0)
尝试在.net。
中设置此项 ServicePointManager.Expect100Continue = false;
或者
ServicePointManager.SetTcpKeepAlive(true, 200000, 200000);
- 这会向服务器发送请求以保持连接活动。