同一服务器上的cURL调用性能不佳

时间:2017-08-07 09:03:36

标签: php performance curl

为什么在同一服务器上调用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)
  1. 为什么每秒请求次数下降得这么快?
  2. 如果在同一台服务器上调用cURL时如何优化这种情况?

1 个答案:

答案 0 :(得分:0)

如果您使用的是PHP7,请检查高sys cpu利用率。尝试使用以下内容禁用大页面:

echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

请参阅:cURL is very slow on PHP 7 but not PHP 5