我有一个运行 Magento 的 Linux 网络服务器(Ubuntu 12.04,内核 3.2.0),其中包含大量 PHP-FPM 子进程。
由于 Magento 是一个繁重的框架,我经常看到几个子进程在 CPU% (使用 htop 查看时)膨胀几秒钟,然后退出前 N 个。
我一直在阅读有关 Linux CPU 调度程序的信息,我得到的是 SCHED_BATCH似乎给进程提供了比默认 SCHED_OTHER 更长的时间片。
如果我将所有 PHP-FPM 进程的调度程序更改为 SCHED_BATCH,会不会有好处?还是我误解了调度程序?
在了解了一点 SCHED_BATCH 之后,我什至不会尝试对其进行基准测试:
SCHED_BATCH 显然是为长时间运行(数小时甚至数天)的计算密集型作业而设计的。您的作业只需要几秒钟或几分之一秒的计算密集型。
这几乎使它成为 Web 服务器的禁忌。如果数据库在同一台机器上,情况会更糟,因为它们可能会争夺那些超长时间片之一。