已解决,多谢大家。
原因:php-fpm运行方式是static, 并且php-fpm子进程设置数量pm.max_children=1
在 2018年6月26日星期二 UTC+8下午10:19:00,wcb...@gmail.com写道:
使用ngx.location.capture_multi请求了PHP提供的两个服务,测试执行时间是两个请求总时间的总和ngx.location.capture_multi{{"/page_singletest"}, {"/page_multitest"}}
单独测试ngx.location.capture("/page_multitest")和ngx.location.capture("/page_singletest")的时间分别是2.061s和1.142s
但是测试直接用过lua响应的两个子请求响应时间是2.016s,比较合理
local res_single, res_multi = ngx.location.capture_multi{{"/single_test"}, {"/multi_test"}};
// 参考代码如下
local res_single, res_multi = ngx.location.capture_multi{{"/page_singletest"}, {"/page_multitest"}};
// 响应/page_singletest子请求的PHP方法
public function indexAction() {
sleep(1);
$res = array(
'code' => '200',
'data' => 'single test'
);
echo json_encode($res);
exit;
}
// 响应/page_multitest子请求的PHP方法
public function indexAction() {
sleep(2);
$res = array(
'code' => '200',
'data' => 'multi test'
);
echo json_encode($res);
exit;
}
PS:手册上对这个方法(ngx.location.capture_multi)的说明如下:This function will not return until all the subrequests terminate. The total latency is the longest latency of the individual subrequests rather than the sum