【发布时间】:2017-08-07 09:03:35
【问题描述】:
为什么在同一服务器上调用 cURL 时只有少数并发会导致阻塞
示例
phpdebug.com
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "http://phpdebug2.com",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
phpdebug2.com
<?php
echo "application2";
Apache ab 测试结果
ab -n 10 -c 2 http://phpdebug.com/
Requests per second: 198.93 [#/sec] (mean)
Time per request: 10.054 [ms] (mean)
Time per request: 5.027 [ms] (mean, across all concurrent requests)
Transfer rate: 33.80 [Kbytes/sec] received
ab -n 10 -c 3 http://phpdebug.com/
Requests per second: 60.42 [#/sec] (mean)
Time per request: 49.648 [ms] (mean)
Time per request: 16.550 [ms] (mean, across all concurrent requests)
Transfer rate: 10.27 [Kbytes/sec] received
ab -n 10 -c 4 http://phpdebug.com/
Requests per second: 17.68 [#/sec] (mean)
Time per request: 226.226 [ms] (mean)
Time per request: 56.557 [ms] (mean, across all concurrent requests)
Transfer rate: 3.00 [Kbytes/sec] received
ab -n 10 -c 5 http://phpdebug.com/
Benchmarking phpdebug.com (be patient)...apr_pollset_poll: The timeout specified has expired (70007)
- 为什么每秒请求数下降如此之快?
- cURL在同一台服务器上调用时如何优化这种情况?
【问题讨论】:
-
想知道这不是更好地放在codereview.stackexchange.com 吗?不确定。
-
运行 TOP 时会发生什么?
-
@NevilleK 像往常一样,几秒钟内显示几个 php-fpm。
-
您能看到两台服务器中的哪一台在消耗资源吗? phpdebug 还是 phpdebug2?
-
@NevilleK 抱歉,我无法区分它们。
标签: php performance curl