高CPU负载运行php进程

时间:2015-05-12 06:29:22

标签: php cpu-usage

我将服务器配备3.1GHz单四核CPU和32 GB RAM。 它作为Web服务器工作,并配置为: Apache 2.4 + MPM Worker + Mod_fcgid

当我运行top命令时,我看到网站的PHP进程的CPU使用率很高。以下是快照

Tasks: 193 total,   1 running, 112 sleeping,   1 stopped,  79 zombie
Cpu(s): 84.0%us,  1.4%sy,  0.0%ni, 12.3%id,  2.3%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  33554432k total, 26637508k used,  6916924k free,        0k buffers
Swap:        0k total,        0k used,        0k free, 10471152k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                               
 8415 mysql     20   0 12.5g 4.1g 6348 S 115.1 12.8   5107:00 mysqld                                                                                                                
18687 domainus  20   0  303m 110m  44m S 64.5  0.3   1:05.51 php                                                                                                                    
18728 domainus  20   0  311m 118m  46m S 42.7  0.4   1:00.57 php                                                                                                                    
18732 domainus  20   0  333m 140m  45m S 40.3  0.4   1:19.61 php                                                                                                                    
17371 domainus  20   0  306m 114m  46m S 32.5  0.3   0:57.16 php                                                                                                                    
18726 domainus  20   0  278m  87m  47m S 24.8  0.3   1:48.62 php                                                                                                                    
14765 domainus  20   0  324m 133m  47m S 17.7  0.4   4:00.94 php      

我想确定,我的Apache配置是正确的,问题在于PHP代码,有关如何深入研究问题的任何建议吗?

2 个答案:

答案 0 :(得分:1)

我的建议是从命令行运行PHP,看看会发生什么。如果可能,请事先关闭Apache。还尝试在不同的服务器上运行相同的站点/ PHP。如果您没有其他可用服务器,则可以使用Vagrant框。可以使用Puphpet轻松创建一个包含PHP和Apache的框。

如果在运行这些测试时没有出现问题,请尝试在Apache中禁用PHP并请求一些纯HTML页面。

答案 1 :(得分:1)

我认为这里的瓶颈是你的MySQL,因为它消耗了大部分cpu和php,最有可能是那些查询。问题可能是由于PHP代码不佳。

正确的方法来深入研究问题所以使用php profiler,看看哪个功能需要时间,然后适当处理。就像数据库交互花费时间一样,然后尝试缓存查询,批量查询以避免并发问题。