我正在使用一个 Java 应用程序,该应用程序使用 SolrJ 将文档索引到 Solr 服务器。
在我的本地测试环境中,我在 Windows XP 机器上的 Tomcat 服务器上运行本地 Solr 实例。当我从不同的 Windows 机器运行 Java 应用程序时,索引成功完成,并且 Solr 日志文件看起来正常。
但是,运行部署在 Linux Web 服务器上的相同 Java 应用程序,并与另一个运行 Solr 的 Linux Web 服务器进行通信,在每个 solr 更新命令后我都会收到“读取超时”消息:
Jul 14, 2011 3:12:31 AM org.apache.solr.core.SolrCore execute INFO: []
webapp=/solr path=/update params={wt=javabin&version=1} status=400 QTime=20020 Jul 14, 2011 3:12:51 AM org.apache.solr.update.processor.LogUpdateProcessor finish INFO: {} 0 20021 Jul 14, 2011 3:12:51 AM org.apache.solr.common.SolrException log SEVERE: org.apache.solr.common.SolrException: java.net.SocketTimeoutException: Read timed out at org.apache.solr.handler.XMLLoader.load(XMLLoader.java:72) at org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java:54) at...
Caused by: javax.xml.stream.XMLStreamException: java.net.SocketTimeoutException: Read timed out
知道为什么会发生这种情况吗?我怀疑这些连接启动后有什么东西正在关闭(例如网络过滤软件、防火墙......),但我工作场所的网络管理员说没有流量被阻止。
最佳答案
是否仅在更新时超时,甚至在查询时超时?
检查Linux服务器机器上的服务器设置是否有非常小的超时值。
关于java - Solr读取超时(仅在生产环境中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6700282/