php 是单核的 ..? 不能物尽其用 ...?

字体: | 打印

刚帮别人在一台服务器上配了 LAMP 环境 ...

8 核 Xeon 四通道 8G 内存 ... 手抖 ... 没用过这么强大的机器呢 ...

配好之后恶作剧心理作祟 ... 写了个大计算量的递归脚本 ...

然则问题就出来了 ...

CPU 的 8 个核始终只有一个是 100% 的 ...

其余的 7 个都处于闲置状态 ...

偶尔会有交替 ... 但是依然是一个下去一个起来 ...

始终只有一个 CPU 满载 ...

而并不是像我想像的那样全 CPU 满载 ...

这是为什么呢 ...?

有没有办法让所有 CPU 协同运作一个脚本呢 ...

CPU 平衡我打开了 ... 也不行 ...

我也来说两句 查看全部评论 相关评论

  • Simonsen (2008-7-12 15:30:51)

    command line形式启动脚本的还是apache形式?

    php本身就是基于过程的脚本语言,不好做多CPU支持,就算做了也应该只是引擎初始化的时候可以做,解析脚本的时候仍然需要基于过程——即单CPU处理。
    apache的话就不知道了,这个要看apache对多核CPU的支持如何了
  • zkcoc (2008-7-12 16:44:39)

    是否可以考虑在这样的服务器上安装多个apache,mysql等,以最大限度榨干其性能
  • dx_andy (2008-7-12 18:02:48)

    只研究PHP程序,没想到运行环境也这般复杂!学习一下,期待答案!
  • harrycms (2008-7-12 19:17:49)

    8核
  • dhgdmw (2008-7-12 19:23:10)

    自己编C调用,或者用JAVA桥
  • 神仙 (2008-7-12 22:32:13)

    如果程序不是并行的换别的语言也没用。
  • Sunyanzi (2008-7-13 01:34:25)

    答 2# ... 是 CLI 形式的 ...

    倒是内存和我想象的一模一样 ...

    不停的暴涨 ... 物理很快就撑满了然后慢悠悠的撑 SWAP ...

    另外还有一个现象很值得注意 ...

    在物理内存占用 99%+ SWAP 占用 50%+ CPU 的一个核占用 100% 的情况下 ...

    从我这边的浏览器上面访问那个网站依然很快就能反应过来 ...

    这大概就是多核的优势吧 ... 不是协同计算而是更稳定 ...

    本来还说写个高运算消耗的 fork 程序的 ...

    看看每一枝都要 100% CPU 的情况下这棵大树能长成什么样子 ...

    结果因为那台服务器已经在机房了就没敢试 ...

    万一死机了就完蛋了呀 ...
  • 17too (2008-7-13 06:44:30)

    8核~~ 强
  • ShiningRay (2008-7-13 10:07:45)

    你装的linux的内核是用的smp的么?
  • Sunyanzi (2008-7-13 17:56:53)

    kernel-smp-devel 这个么 ..?

    我有装的 ...
  • 飞翔de希望 (2008-7-14 17:20:58)

    开俩页面试试,估计就两个CPU占到100%了。。
  • Oceanfire (2008-7-14 17:21:32)

    Apache是多线程的,每一个链接都会开一个线程,这样在多并发的情况下就会用到多核了。
    这也很好的解释了,为什么你用别的浏览器访问还是很快。
  • Simonsen (2008-7-14 19:50:37)

    QUOTE:

    原帖由 Oceanfire 于 2008-7-14 17:21 发表
    Apache是多线程的,每一个链接都会开一个线程,这样在多并发的情况下就会用到多核了。
    这也很好的解释了,为什么你用别的浏览器访问还是很快。
    旺德福   
  • programmerhuang (2008-7-14 20:54:55)

    在多线程/进程时才会分配到其它的上面运行
    就一个线程里面再怎么循环/递归也只是一个线程.

    如上面有人说的, 同时并发有几个同时打开页面, 有可能就会有分配到不同的CPU内核上

    [ 本帖最后由 programmerhuang 于 2008-7-14 20:57 编辑 ]
  • beilee80 (2008-7-14 22:38:39)

    如果服务器的内存够大,把PHP装成fastcgi就行了,还可以跨服务器调用。
  • suihr (2008-7-16 17:20:29)

    服务器强大,LS各位也很强大!
  • w992 (2008-7-17 01:45:29)

    @_@

    對方面可以說多點嗎?

    對那些多XXX多XXX不是太清潔(Multi-????)

    謝^^
  • 卖夹饼的 (2008-7-17 16:00:04)

    用PHP的pcntl模块
  • ShiningRay (2008-7-17 17:25:22)

    QUOTE:

    原帖由 Sunyanzi 于 2008-7-13 17:56 发表
    kernel-smp-devel 这个么 ..?

    我有装的 ...
    是kernel-smp,而且你启动的时候得选择这个内核
  • sskaje (2008-7-18 03:39:58)

    这个有啥好讨论的?