Solr读超时(仅在生产环境中)

我正在使用SolrJ将索引文档索引到Solr服务器的Java应用程序。

在我的本地testing环境中,我在Windows XP上的Tomcat服务器上运行本地Solr实例。 当我从一个不同的Windows框中运行Java应用程序时,索引成功完成,Solr日志文件看起来很正常。

然而,运行在linux webserver上部署的相同的Java应用程序与运行Solr的另一个Linuxnetworking服务器通信,每次solr更新命令后,我都会收到“read timed out”消息:

2011年7月14日上午03时12分31秒org.apache.solr.core.SolrCore执行信息:[]

webapp = / solr path = / update params = {wt = javabin&version = 1} status = 400 QTime = 20020 2011年7月14日上午3:12:51 org.apache.solr.update.processor.LogUpdateProcessor完成INFO:{} 0 20021 2011年7月14日上午3:12:51 org.apache.solr.common.SolrException日志严重性:org.apache.solr.common.SolrException:java.net.SocketTimeoutException:读取超时在org.apache.solr.handler .XMLLoader.load(XMLLoader.java:72)at org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java:54)at …

引起:javax.xml.stream.XMLStreamException:java.net.SocketTimeoutException:读取超时

任何想法,为什么这可能会发生? 我的怀疑是有些东西在启动后closures这些连接(例如网页过滤软件,防火墙…),但是我的工作场所的networkingpipe理员说没有stream量被阻塞。

这也是奇怪的,为什么这个工程在Windows上,而不是在Linux上。

几个线索:

  • 您是否以高价格对数据进行索引? 如果是的话,这可能会导致solr锁在磁盘上写入它的索引(解释为什么这是不可见的开发…)
  • 在Linux上慢盘或FS? 如果是,与索引结合起来,它可以成为一个地狱…
  • 你有没有尝试在同一个Linux机器上运行这两个服务(web和solr)来查看问题消失? 如果问题消失了,那么它显然与networking有关,您可以切换到“最终”解决scheme:
  • 你有没有试过使用tcpdump嗅探networkingstream量,并在Wireshark打开跟踪,看看发生了什么?

希望这有帮助,祝你好运 !