php-fpm:服务器负载非常高

php-fpm:服务器负载非常高

从今天起我的网络服务器(VPS 上的 nginx + php-fpm + mysql)非常慢。

htop 说:

 1  [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||100.0%]     Tasks: 63 total, 13 running
  2  [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||100.0%]     Load average: 11.67 10.95 6.95
  3  [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||100.0%]     Uptime: 00:18:40
  4  [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||100.0%]
  5  [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||100.0%]
  6  [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||100.0%]
  Mem[|||||||||||                                                137/1280MB]
  Swp[                                                                0/0MB]

  PID USER     PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command
 6802 www       20   0 76232 12320  5716 R 27.0  0.9  0:06.48 php-fpm: pool www
 7048 www       20   0 75200 12136  5700 R 52.0  0.9  0:03.64 php-fpm: pool www
 6699 www       20   0 74176 11124  5700 R 27.0  0.8  0:07.36 php-fpm: pool www
 7029 www       20   0 73668 10380  5676 R 42.0  0.8  0:03.52 php-fpm: pool www
 6995 www       20   0 76228 12456  5644 R 42.0  1.0  0:03.98 php-fpm: pool www
 6858 www       20   0 74172 10684  5620 R 35.0  0.8  0:05.52 php-fpm: pool www
 6998 www       20   0 75200 12072  5620 R 37.0  0.9  0:03.95 php-fpm: pool www
 7098 www       20   0 75200 12052  5616 R 42.0  0.9  0:02.33 php-fpm: pool www
 7093 www       20   0 76228 12496  5612 R 37.0  1.0  0:03.02 php-fpm: pool www
 7226 www       20   0 74692 11080  5588 R 32.0  0.8  0:00.66 php-fpm: pool www

CPU:(cat /proc/cpuinfo | grep 型号)

model           : 44
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model           : 44
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model           : 44
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model           : 44
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model           : 44
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
model           : 44
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz

我认为 10 的负载和 100% 的 CPU 使用率是不正常的...我该如何解决这个问题?

编辑: 我认为可能是因为 mysql。以下是 PhpMyAdmin 进程列表:

Show Full Queries   ID  User    Host    Database    Command     Time    Status  SQL query
Kill    3567    bs  localhost   bs  Sleep   2   ---     ---
Kill    3575    bs  localhost   bs  Sleep   1   ---     ---
Kill    3576    bs  localhost   bs  Sleep   1   ---     ---
Kill    3578    bs  localhost   bs  Sleep   0   ---     ---
Kill    3579    bs  localhost   bs  Sleep   0   ---     ---
Kill    3580    bs  localhost   bs  Query   0   Writing to net  SELECT count( id )
FROM messages
WHERE uid_to =345
AND unread =1
Kill    3581    bs  localhost   bs  Sleep   0   ---     ---
Kill    3582    unauthenticated user    connecting host     None    Connect         login   ---
Kill    3583    phpmyadmin  localhost   None    Sleep   0   ---     ---
Kill    3584    root    localhost   mysql   Query   0   ---     SHOW PROCESSLIST

如您所见,仅使用了一个线程,但Google Analytics(分析)显示:

Right now
429
active visitors on site 

我通过 PDO 连接到 Mysql。如何获得更多线程?

答案1

以下是分析您的代码的链接: StackOverflow:分析 PHP 脚本的最简单方法

答案2

负载不应高于核心数量。目前您有 6 个核心,高于此数量的负载会导致响应缓慢。

看起来您的 PHP 脚本正在消耗所有 CPU 资源。对其进行分析是个好主意。

您还可以使用一些缓存来增加 PHP 处理能力。我建议您尝试一下 eaccelerator,它应该很容易启用,还可以看看 nginx 缓存选项。

我们使用的另一个很好的分析器是 xhprof:https://github.com/facebook/xhprof但需要多读一些才能使用。

祝你好运

相关内容