2016-10-28 36 views
3

我正在使用Solr PHP擴展。代碼如下所示:對SOLR的第一個查詢需要比以下查詢長30倍

$client = new SolrClient($instance); 
$response1 = $client->query($query1); 
$response2 = $client->query($query2); 

第一個查詢大約需要160ms。第二(第三,第四...)個查詢大約需要5ms。查詢不同,所以它不是緩存。而且這不是查詢的細節,因爲查詢的切換位置使得$query2變得非常慢,並且$query1速度很快。

很明顯,這不是關於查詢,而是關於首次連接到SOLR。這不是關於網絡延遲,因爲第二個查詢非常快。關於它是什麼以及如何加速它的任何想法?

+0

第一次DNS查找?你如何訪問你的Solr服務器? – jeroen

+0

他們是否反對同一領域?他們使用相同的排序嗎?它們是否包含'fq'中的相同過濾器?索引文件是否存儲在旋轉磁盤上?他們是否在第一次請求的io緩存中? – MatsLindh

+0

SOLR位於某個端口的本地主機上。 – Dmitry

回答

0

問題解決了!解決SOLR主機導致延遲。即使在/ etc/hosts中列出本地主機或域時,它仍需要很長時間。將域更改爲IP可使所有查詢在5ms以內運行。

有趣的細節。使用file_get_contents時,解析時間小於1ms。但是當使用CURL或SOLR客戶端時,需要160ms。我們還沒有想出這個問題,但這是一個不同的故事。