[英]ElasticSearch\Client in PHP uses MultiCurl
在對使用ElasticSearch PHP客戶端的產品進行性能分析時,我注意到在執行請求時,它自然使用Guzzle的CurlMulti適配器。
這似乎會造成大量開銷,並且比較此客戶端與我自己的cURL下載器之間的時間安排后,發現ES \\ Client的速度慢了將近10倍。 看起來這與使用multi純粹有關。
如何更新適配器以使用嵌入式curl請求?
我似乎無法在文檔中找到可以更改此內容的部分。
抱歉,目前沒有很好的記錄。 您的基准測試是准確的-使用Guzzle會帶來相當大的開銷。 開銷實際上是由於各種Guzzle類的自動加載成本所致。 您可以用CurlMultiConnection類替換Guzzle Connection,這是輕量級的替換。
您可以通過以下方式啟用它:
$params['connectionClass'] = '\Elasticsearch\Connections\CurlMultiConnection';
$client = new Client($params);
使用此語法,您還可以編寫自己的替換Connection類。 它只需要遵循ConnectionInterface
接口。
根據我的基准 (目前為止還算很老):
喝酒失控
無網絡:7.095毫秒
網絡Ping:15.856毫秒
CurlMultiConnection
無網絡:4.345毫秒
網絡Ping:7.122毫秒
基於性能分析,速度差異幾乎完全是自動加載。 加載后,兩個Connection類都以相同的吞吐量執行網絡操作。 與APC或HHVM一起使用時,兩個Connection類的執行速度都大大提高。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.