我在VMWare中的Linux上运行Apache。

我正在请求的一个PHP页面执行sleep() ,我发现如果我尝试在第一页是sleep()'ing尝试请求第二页,则第二页挂起,等待sleep()从第一页完成。

有没有人见过这种行为?

我知道PHP不是多线程的 ,但这似乎是对CPU的严重错误处理。

编辑 :我应该提到CPU使用率没有高峰。 CPU“hogging”的意思是,当页面处于sleep()时,没有其他PHP页面能够使用CPU。

===============>>#1 票数:11

可能是被调用的页面打开一个会话然后不提交它,在这种情况下,请参阅此答案以获得解决方案。

===============>>#2 票数:4

这可能意味着你的Apache只使用了1个子进程。

因此:

1子进程正在处理一个请求(在这种情况下是睡眠,但它可能正在做实际工作,Apache无法区分),所以当一个新请求到来时,它必须等到第一个进程完成。

解决方案是增加允许Apache生成的子进程数(如果你正在使用prefork MPM,则为MaxClients指令),只需从PHP脚本中删除sleep()即可。

如果不知道你的脚本中发生了什么,很难说,但你可以摆脱睡眠()。

===============>>#3 票数:1

您是否真的看到CPU达到100%或者只是没有提供其他页面? 你跑了多少个apache-instances? 当你在线程中运行sleep()时,它们都停止了吗?

PHP的sleep()函数基本上在空闲循环中运行n秒。 它不释放任何内存,但不应显着增加CPU负载。

  ask by Steve M translate from so

未解决问题?本站智能推荐: