我有一台带有 2 个处理器、4 个内核和 16GB 内存的专用服务器,我托管了一些 php 应用程序,这些应用程序对 php 和 mysql 的使用率很高。当我检查 top 命令时,我发现 php 和 mysql 消耗了大约 80% 的 CPU,但在检查 mpstat 命令以检查每个内核的使用情况时,我发现所有内核的空闲率为 95%,对此有何解释?请注意,运行这些应用程序时,服务器会变慢。我应该购买另一台内核更多的服务器吗?
top command out put:
7589 root 20 0 287648 31480 18540 R 78.7 0.2 1:49.11 php
1006 mysql 20 0 2400692 214440 6704 S 19.3 1.3 434:34.99 mysqld
18 root 20 0 0 0 0 S 2.0 0.0 1435:51 ksoftirqd/2
3 root 20 0 0 0 0 S 1.3 0.0 1424:58 ksoftirqd/0
5228 www-data 20 0 339616 29608 17772 S 1.3 0.2 0:00.72 apache2
mpstat -P ALL output:
root@datax:~# mpstat -P ALL
Linux 3.16.0-4-amd64 (datax) 08/15/2016 _x86_64_ (4 CPU)
04:01:58 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
04:01:58 AM all 1.49 0.13 0.83 2.23 0.00 0.03 0.00 0.00 0.00 95.29
04:01:58 AM 0 1.38 0.13 0.62 2.30 0.00 0.03 0.00 0.00 0.00 95.54
04:01:58 AM 1 1.38 0.13 0.62 2.32 0.00 0.03 0.00 0.00 0.00 95.53
04:01:58 AM 2 1.62 0.13 1.04 2.15 0.00 0.03 0.00 0.00 0.00 95.03
04:01:58 AM 3 1.59 0.13 1.04 2.16 0.00 0.03 0.00 0.00 0.00 95.06
答案1
如果您一次只运行一个代码实例,并且代码不是多线程的,那么更多的内核将对您没有帮助。
PHP 可以使用多个核心来同时处理多个请求,因为这样就不存在干扰多线程的内部代码依赖关系。