Я работаю с приложением Java, которое использует SolrJ для индексации документов на сервере Solr.
В моей локальной тестовой среде я запускаю локальный экземпляр Solr на сервере Tomcat в моем компьютере с Windows XP. Когда я запускаю приложение Java из другого окна Windows, индексация завершается успешно, и файлы журнала Solr выглядят нормально.
Однако при запуске того же Java-приложения, развернутого на веб-сервере linux, которое обменивается данными с другим веб-сервером linux, на котором запущен Solr, я получаю сообщения «тайм-аут чтения» после каждой команды обновления solr:
14 июля 2011 г. 3:12:31 org.apache.solr.core.SolrCore выполнить INFO: []
webapp = / solr path = / update params = {wt = javabin & version = 1} status = 400 QTime = 20020 14 июля 2011 г. 3:12:51 org.apache.solr.update.processor.LogUpdateProcessor finish ИНФОРМАЦИЯ: {} 0 20021 14 июля 2011 г. 3:12:51 org.apache.solr.common.SolrException log СЕРЬЕЗНО: org.apache.solr.common.SolrException: java.net.SocketTimeoutException: время чтения истекло в org.apache.solr.handler .XMLLoader.load (XMLLoader.java:72) в org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody (ContentStreamHandlerBase.java:54) в ...
Вызвано: javax.xml.stream.XMLStreamException: java.net.SocketTimeoutException: время чтения истекло
Есть идеи, почему это может происходить? Я подозреваю, что что-то закрывает эти подключения после их запуска (например, программное обеспечение веб-фильтрации, брандмауэр ...), но сетевые администраторы на моем рабочем месте говорят, что трафик не блокируется.
Мне также странно, почему это работает в Windows, но не в Linux.
Несколько отведений:
tcpdump
и откройте след в Wireshark
, посмотри, что происходит?Надеюсь это поможет. Удачи !