2012-01-05 66 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

相關問題