将PHP作为CLI运行时,CPU负载率很高

时间:2010-08-17 15:55:08

标签: linux memory-management ubuntu cpu-usage ubuntu-10.04

对于这个模糊的问题很抱歉,但我刚刚编写了一些以CLI身份执行的PHP代码,我很确定它是行为不端的。当我在命令行上运行“top”时,它显示给予任何单个进程的资源非常少,但是在40-98%到iowait时间(%wa)之间。我通常在%us和%sy之间分配大约.7%,其余资源用于空闲进程(通常在20-50%之间)。

这个服务器正在执行MySQL查询,很容易,300倍于其他服务器运行相同查询所花费的时间,它甚至需要通过SSH登录才能看到永远......所以尽管有一些空闲的cpu时间遗留下来,似乎很清楚发生了一件非常糟糕的事情。无论正在运行的脚本是什么,都在更新我的MySQL数据库,但它们开始时似乎比指数级慢。

我需要一些想法作为我的启动点来诊断正在发生的事情。

我想知道的一些事情是:

  1. 如何确认实际运行的脚本数
  2. 无论如何确认这些脚本在通过时实际上是关闭的,而不只是“闲逛”占用CPU时间和内存?
  3. 我应该检查什么样的瓶颈,以确保我不会创建太多这个脚本的实例,所以这不会再发生。
  4. 我意识到这可能是一个很大的问题,但我更愿意遵循所提供的任何链接并阅读此内容......我只需要知道从哪里开始寻找。

2 个答案:

答案 0 :(得分:4)

高iowait意味着您的磁盘带宽已饱和。这可能只是因为你的MySQL服务器充斥着过多的查询,而且它正在试图加载数据来执行它们。“/ p>

或者,您可能在物理内存上运行不足,从而导致大量磁盘IO进行交换。

要开始诊断,请运行vmstat 60 5分钟并检查输出 - siso列显示交换和换出,以及bibo行显示其他IO。 (编辑您的问题并粘贴输出以获得更多帮助)。

答案 1 :(得分:0)

高iowait可能意味着你有一个缓慢/有缺陷的磁盘。尝试使用S.M.A.R.T进行检查。磁盘监视器。

http://www.linuxjournal.com/magazine/monitoring-hard-disks-smart

  1. ps auxww | grep SCRIPTNAME
  2. 相同。
  3. 为什么要开始运行多个脚本实例?