如何给Apache更多的内存

How to give more memory to Apache

我在 Centos 7 上使用 PHP 和 Apache 2.4 来 运行 一个非常 CPU 密集的概率模型。 运行 在我家的电脑上用了 8 天,所以我决定把它转移到云服务上。所以我配置了它,现在只需要 5 个小时。太棒了!

但是有一个问题,在处理算法时我检查了云上的 "free" 和 "top" 命令,它报告说我的 CPU 和 10 使用了大约 24%可用内存的百分比!我每小时向 Linode 的一台服务器支付大约 1.50 美元,该服务器具有 96 GB 和 20 CPU 个内核,所以我最好使用 100% 的可用 CPU.

我知道这在很大程度上取决于算法,但请检查下面的代码。这是一个非常繁重的 CPU 密集型算法,它应该使用 100% 的 CPU 但不,它只使用 24%(根据 "top")。

<?php

set_time_limit(0);
ini_set("memory_limit","-1");

for ($i=0;$i<10000;$i++) {

    for ($ii=0;$ii<10000;$ii++) {

        for ($iii=0;$iii<10000;$iii++) {

            for ($iiii=0;$iiii<10000;$iiii++) {



            }

        }

    }

}

?>

所以,这是怎么回事?如何让我的 Apache 使用更多 CPU 和内存?

您是 运行 PHP 中的高度 CPU 密集型算法?我不确定这是个好主意。

无论如何,我认为这里的问题是您的代码 运行 在四核处理器上,但仅在单线程中。因此,您目前可以达到的最大 CPU 使用率是 25%。

我建议您将软件重写为多线程应用程序,最好使用 C 或 C++ 等语言。