我将服务器配备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代码,有关如何深入研究问题的任何建议吗?
答案 0 :(得分:1)
我的建议是从命令行运行PHP,看看会发生什么。如果可能,请事先关闭Apache。还尝试在不同的服务器上运行相同的站点/ PHP。如果您没有其他可用服务器,则可以使用Vagrant框。可以使用Puphpet轻松创建一个包含PHP和Apache的框。
如果在运行这些测试时没有出现问题,请尝试在Apache中禁用PHP并请求一些纯HTML页面。
答案 1 :(得分:1)
我认为这里的瓶颈是你的MySQL,因为它消耗了大部分cpu和php,最有可能是那些查询。问题可能是由于PHP代码不佳。
正确的方法来深入研究问题所以使用php profiler,看看哪个功能需要时间,然后适当处理。就像数据库交互花费时间一样,然后尝试缓存查询,批量查询以避免并发问题。