在第三方虚拟服务器上检查客户端的应用程序时,我注意到一个有趣的现象:
@H_403_1@单个
PHP进程似乎使用多个核心.据我所知,PHP无法做到这一点.
行为描述@H_403_1@这是处理对Web应用程序的单个请求时htop的输出:@H_403_1@
所有四个内核都是100%,只有一个PHP进程,cpu占396%,内存使用率很低.@H_403_1@我已经使用strace或pidstat调查了高系统cpu,但找不到任何IO问题.
服务器信息@H_403_1@虚拟服务器是使用英特尔VT-X虚拟化和Virtuozzo的Debain LAMP环境,提供4个560 MHz核心:
服务器在apache 2.4.7(prefork)服务的快速CGI中运行PHP 5.5.9.@H_403_1@Nginx 1.9.4用作崇拜代理,Plesk 12.5用于配置服务器.
示例PHP代码(EDIT)@H_403_1@为了排除应用程序代码作为源我使用一段简单的代码确认了行为:
$array = array('z','y','x','h','d','s','w','q','a'); for ($i=0; $i < 9999999; $i++) { sort($array); // Delaying execution } echo 'loop ended';
两个或多个PHP进程(EDIT)@H_403_1@如果同时处理两个或多个请求,则每个进程在尽可能多的核上运行(2个进程=>每个2个核,3个进程=>每个1.33个核).
问题
> PHP是否可以同时使用多个核心?@H_403_1@>这可能与虚拟化有关吗?@H_403_1@>后续行动:系统cpu使用占主导地位的原因是什么?