swoole / swoole-src

🚀 Coroutine-based concurrency library for PHP
https://www.swoole.com
Apache License 2.0
18.27k stars 3.16k forks source link

开启native curl后性能远不及未开启native curl #5234

Closed netcccyun closed 4 months ago

netcccyun commented 4 months ago

此问题是该贴的后续 https://github.com/swoole/swoole-src/issues/5232

在开启native curl后,请求https的性能远不如未开启native curl的模式。

我这边测试了下,请求同样的https链接,性能差距大概5倍左右(请求http的性能一样,只有https有性能问题),在一台2C4G的服务器上,使用native curl后每秒请求80次CPU占用50%,在不使用native curl的情况下,每秒请求400次 CPU才占用50%左右。

代码中CURLOPT_SSL_VERIFYPEER和CURLOPT_SSL_VERIFYHOST都是false,也即未开启SSL证书验证。

matyhtf commented 4 months ago

符合预期,native curl 底层基于 libcurl ,这并不是一个为 php 语言专门设计的 HTTP 库,未能有效利用到 PHP ZendVM 提供的能力。而 SWOOLE_HOOK_CURL 底层是 Swoole\Http\Client ,是专门为 PHP 设计的,可以直接将元数据存储到 PHP 数组,而无需进行任何转换。

native-curl 可以提供最大的兼容性支持,可以使用所有 CURL 的功能, 而 Swoole\Http\Client 只有部分 CURL 的功能

netcccyun commented 4 months ago

Swoole\Http\Client能不能后期支持下 https://github.com/swoole/swoole-src/issues/5232 说的那几个数据值?