第一个对SOLR的查询所花费的时间是后面查询的30倍


First query to SOLR takes 30 times longer than the following queries

我正在使用Solr PHP扩展。代码看起来像这样:

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

第一次查询大约需要160ms。第二次(第三次、第四次……)查询大约需要5ms。查询是不同的,所以它不是缓存。这不是查询的细节,因为交换查询的位置使$query2非常慢,而$query1很快。

显然,这不是关于查询,而是关于第一次连接到SOLR。这与网络延迟无关,因为第二个查询非常快。关于它是什么以及如何加速它有什么想法吗?

问题解决了!解析SOLR主机导致延迟。处理步骤即使是在/etc/hosts中列出的localhost或域,它仍然需要花费很多时间。将domain更改为IP使所有查询在5ms内运行。

有趣的细节。当使用file_get_contents时,解析在1ms以下。但是当使用CURL或SOLR客户端时,它需要160ms。我们还没有解决这个问题,但这是另一回事。