加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP如何使用超过100%的CPU?

发布时间:2020-12-13 13:20:18 所属栏目:PHP教程 来源:网络整理
导读:在第三方虚拟服务器上检查客户端的应用程序时,我注意到一个有趣的现象: 单个 PHP进程似乎使用多个核心.据我所知,PHP无法做到这一点. 行为描述 这是处理对Web应用程序的单个请求时htop的输出: 输出htop,绿色是用户cpu,红色是系统cpu 所有四个内核都是100%,
在第三方虚拟服务器上检查客户端的应用程序时,我注意到一个有趣的现象:
单个 PHP进程似乎使用多个核心.据我所知,PHP无法做到这一点.

行为描述
这是处理对Web应用程序的单个请求时htop的输出:

输出htop,绿色是用户cpu,红色是系统cpu

所有四个内核都是100%,只有一个PHP进程,CPU占396%,内存使用率很低.
我已经使用strace或pidstat调查了高系统cpu,但找不到任何IO问题.

服务器信息
虚拟服务器是使用英特尔VT-X虚拟化和Virtuozzo的Debain LAMP环境,提供4个560 MHz核心:

lscpu的输出

服务器在apache 2.4.7(prefork)服务的快速CGI中运行PHP 5.5.9.
Nginx 1.9.4用作崇拜代理,Plesk 12.5用于配置服务器.

示例PHP代码(EDIT)
为了排除应用程序代码作为源我使用一段简单的代码确认了行为:

$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)
如果同时处理两个或多个请求,则每个进程在尽可能多的核上运行(2个进程=>每个2个核,3个进程=>每个1.33个核).

问题

> PHP是否可以同时使用多个核心?
>这可能与虚拟化有关吗?
>后续行动:系统CPU使用占主导地位的原因是什么?

> PHP是否可以同时使用多个核心?

是的,它被称为pthreads.它旨在在PHP中实现真正的多线程.

>这可能与虚拟化有关吗?

不太可能.我想和Will说的一样,它可能是由php推出的一个子流程.

>后续行动:系统CPU使用占主导地位的原因是什么?

它与应用程序完全相关.但是php推出的任何多核任务都可以显示出来.一个用于光栅化一桶svg图像的java应用程序.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读