如何通过apache解决高CPU负载? (ubuntu的+ EC2)

时间:2010-12-27 22:35:51

标签: apache ubuntu apache2 cpu

我在Amazon EC2中设置了一个实例,这是一个运行apache2,php5和mysql的ubuntu 10.04服务器。

只有不到10个用户使用该系统,服务器获得20%,30%,40%的CPU负载。

使用top我在第一行中看到:

  

11121 www-data 20 0 71940 20m 11m S | 22.6 | 1.2 | 0:00.68 apache2
  10108 www-data 20 0 72196 22m 12m S | 21.9 | 1.3 | 1:15.81 apache2
  11122 www-data 20 0 71936 20m 11m S | 7.3 | 1.2 | 0:00.68 apache2
  10111 www-data 20 0 72196 22m 12m S | 1.7 | 1.3 | 1:16.43 apache2

这4行中的CPU总和为53,5。

如何查看更详细的流程?
我怎样才能看看脚本运行,需要花费的时间,每个人消耗的处理器的消耗?

感谢。

3 个答案:

答案 0 :(得分:8)

我通过安装Apache mod Status - http://httpd.apache.org/docs/2.0/mod/mod_status.html解决了这个问题。在那里,您可以看到每个PID使用的URL。

希望它可以帮助任何人...

答案 1 :(得分:3)

查看它正在做什么的一种方法是使用lsof(您可能必须安装它)。要查看示例中的进程正在访问您,请执行以下操作:

lsof -p 11121,10108,11122,10111

这将显示进程已打开的所有文件。通常,apache进程中的高CPU是由于网站试图在服务器端做的事情。

答案 2 :(得分:2)

您可以在父进程上使用strace来更好地了解它的作用。