在对使用ElasticSearch PHP客户端的产品进行概要分析时,我注意到它本身在执行请求时使用Guzzle的CurlMulti适配器。
这似乎会导致很多开销,并且比较此客户端和我自己的cURL下载器之间的时间显示ES \ Client几乎慢了10倍。看起来它纯粹与使用multi。
有关如何更新适配器以使用内联卷曲请求?
我似乎无法在文档中找到允许我更改此内容的部分。
答案 0 :(得分:2)
对不起,目前还没有充分记录。您的基准测试准确无误 - Guzzle的使用带来了相当大的开销。开销实际上是由于各种Guzzle类的自动加载成本。您可以使用CurlMultiConnection类替换Guzzle Connection,这是一个轻量级的替代品。
您可以使用以下方式启用它:
$params['connectionClass'] = '\Elasticsearch\Connections\CurlMultiConnection';
$client = new Client($params);
使用此语法,您还可以编写自己的替换Connection类。它只需要遵循ConnectionInterface
接口。
Based on my benchmarks(在这一点上确实相当老):
<强>狂饮强>
无网络:7.095毫秒
网络Ping:15.856 ms
<强> CurlMultiConnection 强>
无网络:4.345毫秒
网络Ping:7.122 ms
基于分析,速度的差异几乎完全是自动加载。加载后,两个Connection类都以相同的吞吐量执行网络操作。与APC或HHVM一起使用时,两个Connection类的执行速度都会显着提高。