当我看到高CPU,但内存使用率低,我应该如何调整Apache?

我的CentOSnetworking节点(LAMP堆栈)正在经历高CPU使用率,但内存使用率低。 几乎所有的进程都是apache。 我知道我可以添加额外的networking节点,直到我的CPU使用变得合理,但我想有一些快速调整技巧,可以在这里很长的路要走。

CPU在90-100%之间反弹。 Mysql的反弹在5%到45%之间。 其余的由Apache完成。

最佳:

top - 21:15:49 up 46 days, 20:39, 4 users, load average: 34.17, 44.62, 51.03 Tasks: 133 total, 32 running, 101 sleeping, 0 stopped, 0 zombie Cpu(s): 90.4%us, 9.6%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.1%st Mem: 8388608k total, 6116448k used, 2272160k free, 84160k buffers Swap: 16777208k total, 68k used, 16777140k free, 3488044k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 15775 mysql 15 0 827m 153m 3712 S 43.7 1.9 0:55.04 mysqld 15911 apache 16 0 275m 10m 3872 S 24.1 0.1 0:03.15 httpd 15816 apache 16 0 288m 23m 4116 R 23.5 0.3 0:11.88 httpd 15807 apache 15 0 281m 17m 5028 S 21.5 0.2 0:11.71 httpd 15897 apache 16 0 277m 13m 4104 S 21.2 0.2 0:02.68 httpd 15834 apache 16 0 276m 11m 3916 S 20.6 0.1 0:05.22 httpd 15842 apache 16 0 275m 11m 4116 S 19.3 0.1 0:07.86 httpd 15870 apache 16 0 294m 30m 5044 R 17.4 0.4 0:06.36 httpd 15782 apache 15 0 278m 13m 4124 R 12.2 0.2 0:08.54 httpd 15819 apache 15 0 280m 17m 5016 S 11.6 0.2 0:07.01 httpd 15683 apache 16 0 288m 23m 4128 R 10.9 0.3 0:09.90 httpd 15876 apache 16 0 284m 19m 3880 R 10.6 0.2 0:04.35 httpd 15878 apache 15 0 276m 11m 4104 S 10.6 0.1 0:06.42 httpd 15913 apache 16 0 275m 10m 3920 R 9.6 0.1 0:07.98 httpd 15898 apache 16 0 280m 16m 4104 S 9.3 0.2 0:02.85 httpd 15817 apache 16 0 277m 13m 4108 S 9.0 0.2 0:05.55 httpd 15843 apache 16 0 280m 15m 4104 R 8.7 0.2 0:10.80 httpd 15812 apache 16 0 280m 16m 5012 R 8.0 0.2 0:05.18 httpd 15844 apache 16 0 281m 16m 4116 R 7.4 0.2 0:08.63 httpd 15833 apache 16 0 281m 18m 5036 R 7.1 0.2 0:04.76 httpd 15795 apache 16 0 280m 15m 3920 R 6.8 0.2 0:08.65 httpd 15704 apache 15 0 280m 16m 4096 S 6.4 0.2 0:09.06 httpd 15849 apache 16 0 280m 15m 4124 R 6.4 0.2 0:05.59 httpd 15806 apache 16 0 276m 11m 3876 S 6.1 0.1 0:10.33 httpd 15902 apache 16 0 280m 15m 3912 R 6.1 0.2 0:03.40 httpd 15688 apache 16 0 279m 14m 4116 R 5.8 0.2 0:06.07 httpd 15904 apache 16 0 280m 15m 3860 R 5.8 0.2 0:02.74 httpd 15703 apache 16 0 281m 17m 5048 R 5.1 0.2 0:03.86 httpd 15705 apache 16 0 281m 17m 5044 R 4.5 0.2 0:13.54 httpd 15821 apache 15 0 276m 11m 4072 S 4.5 0.1 0:04.24 httpd 15830 apache 16 0 278m 13m 4112 R 4.2 0.2 0:06.37 httpd 15850 apache 16 0 277m 12m 3872 R 3.9 0.2 0:04.64 httpd 15912 apache 15 0 276m 11m 3920 S 3.9 0.1 0:05.58 httpd 15804 apache 15 0 280m 15m 3932 R 3.5 0.2 0:09.13 httpd 15805 apache 16 0 281m 15m 3932 R 3.5 0.2 0:09.00 httpd 15899 apache 16 0 277m 12m 4104 R 2.6 0.2 0:03.26 httpd 15701 apache 16 0 277m 12m 3920 R 2.3 0.2 0:08.35 httpd 15781 apache 15 0 274m 9.8m 3924 S 1.9 0.1 0:10.48 httpd 15848 apache 15 0 276m 11m 3876 S 1.9 0.1 0:06.63 httpd 15901 apache 15 0 275m 10m 3916 S 1.9 0.1 0:02.18 httpd 15879 apache 16 0 280m 16m 4104 R 1.3 0.2 0:02.03 httpd 15820 apache 16 0 281m 17m 5260 R 1.0 0.2 0:05.24 httpd 

相关的httpd.conf:

 Timeout 120 KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 5 <IfModule prefork.c> StartServers 8 MinSpareServers 5 MaxSpareServers 20 ServerLimit 256 MaxClients 256 MaxRequestsPerChild 4000 </IfModule> <IfModule worker.c> StartServers 2 MaxClients 150 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25 MaxRequestsPerChild 0 </IfModule> 

这可能是,在mod_php中运行的一些PHP脚本消耗了太多的CPU时间。 整体推荐是一般的,他们每个人都会有一些好处:

  • 安装APCcaching并检查是否真正运行(APC已经捆绑了apc.php文件,其中显示了APC状态以及caching命中和未命中)
  • 安装nginx并将其作为反向代理安装在apache之前 – 这将减less服务静态文件的开销,并将更多的CPU资源留给服务器dynamic内容
  • 使用%t%T指令将CustomLog添加到apache并检查日志 – 您将看到最重要的时间运行,因此大多数CPU
  • 优化/重写这些脚本