簡體   English   中英

PHP中的ElasticSearch \\ Client使用MultiCurl

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM