CentOS/Plesk 服务器 apache 大量 CPU 使用率

CentOS/Plesk 服务器 apache 大量 CPU 使用率

我有两台服务器 - 一台运行 PHP Web 服务,另一台是数据库服务器。我的负载很高(~9.0),我相信这是某种配置问题。PHP 处理很少,所有繁重的工作都由数据库服务器完成。我每秒大约有 6-8 个请求。

系统是 CentOS/Plesk(不是我的选择)。

top看起来像这样:

top - 19:54:38 up  4:38,  2 users,  load average: 9.42, 9.10, 8.86
Tasks:  48 total,  12 running,  36 sleeping,   0 stopped,   0 zombie
Cpu(s): 67.4%us, 32.5%sy,  0.0%ni,  0.2%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   2097152k total,   231120k used,  1866032k free,        0k buffers
Swap:        0k total,        0k used,        0k free,        0k cached   

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                                   
11806 apache    16   0 50416  28m 4744 R 24.6  1.4   7:27.61 httpd                                                                                                                                                      
11770 apache    16   0 49140  27m 4764 R 23.6  1.4   7:32.80 httpd                                                                                                                                                      
11783 apache    16   0 50424  28m 4736 R 23.2  1.4   7:19.99 httpd                                                                                                                                                      
30217 apache    16   0 50412  28m 4732 R 21.6  1.4   3:33.00 httpd                                                                                                                                                      
26245 apache    16   0 50412  28m 4732 R 21.2  1.4   4:14.98 httpd                                                                                                                                                      
26256 apache    16   0 48880  27m 4732 R 21.2  1.3   4:15.62 httpd                                                                                                                                                      
13659 apache    15   0 52464  30m 4764 R 19.2  1.5   5:23.12 httpd                                                                                                                                                      
26255 apache    16   0 48880  27m 4748 R 17.3  1.3   4:16.62 httpd                                                                                                                                                      
30215 apache    16   0 48796  27m 4732 R 16.3  1.3   3:45.32 httpd                                                                                                                                                      
29703 apache    16   0 52208  30m 4764 R 12.3  1.5   3:46.21 httpd    

数据库服务器上的负载几乎为零-0.05-0.07。

我不是服务器专家,所以我已经处理这个问题一段时间了。我以为我之前通过yum update在服务器上运行修复了这个问题 - 许多软件包都更新了,所以我推测这是 httpd 或类似程序中的一个修复错误。问题又出现了,我yum update再次运行,问题又消失了。现在问题又出现了,更新也无法修复它 - 我觉得这整件事相当奇怪。

netstat有许多 (~100) 个相同的条目,如下所示(由于保密协议的原因,IP 和主机名被隐藏):

Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 123.123.123.123:12345       mydbserver.com:mysql     TIME_WAIT

此外,它还有另外一百个左右的传入连接条目。

我将非常感激任何诊断此问题的想法或方法 - 我主要不是服务器人员(我是一名程序员),并且已经深陷其中。我相当肯定 PHP webservice 不是罪魁祸首 - 事实上这个问题在某一时刻得到了解决,这让我觉得它没问题,这是一个系统配置问题。

答案1

  • 检查 DNS(# ping mydbserver.com)
  • 检查 MySQL PROCESSLIST(mysql> SHOW FULL PROCESSLIST)
  • 使用 strace(# strace -fp $APACHE_PID),进行分析(# strace -cfp $APACHE_PID)
  • 如果使用PHP-FPM,请使用slowlog
  • 检查 iptables 规则和与 MySQL 服务器的网络连接
  • 使用 microtime() 记录您的 PHP 脚本或使用 Pinba。使用配置文件工具

相关内容