如何在专用 WHM 服务器上追踪高 PHP-FPM 使用情况?

如何在专用 WHM 服务器上追踪高 PHP-FPM 使用情况?

这是在非托管的专用网络服务器上运行的

  • Opencart 2.3.0.2
  • PHP 7.1
  • 服务器规格:
  • Xenon 2.13Ghz 8 核 32GB RAM
  • CentOS 7.8
  • WHM v86.0.18

Cloudflare 的网络流量统计数据

流量看起来像是遭到了 DDOS 攻击,尽管情况从未如此糟糕。就服务器资源而言。我认为 Opencart 中可能存在某些问题,导致它占用了如此多的 CPU。所有登录表单都受 v2 recaptcha 保护。

这是 CPU 使用率为 59% 的 php-fpm 进程的跟踪信息。https://pastebin.com/ALdhfHMN

Pid                     Owner             Prty   CPU%   Memory %                  Command
23849 (Trace) (Kill)    ocstorecpaneluser   0     73.91 0.42    /opt/cpanel/ea-php71/root/usr/bin/php-cgi
23848 (Trace) (Kill)    ocstorecpaneluser   0     64.41 0.35    /opt/cpanel/ea-php71/root/usr/bin/php-cgi
23847 (Trace) (Kill)    ocstorecpaneluser   0     60.66 0.46    /opt/cpanel/ea-php71/root/usr/bin/php-cgi
2386 (Trace) (Kill)     mysql               0     53.08 0.69  /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
23846 (Trace) (Kill)    ocstorecpaneluser   0     41.38 0.38    /opt/cpanel/ea-php71/root/usr/bin/php-cgi
23842 (Trace) (Kill)    ocstorecpaneluser   0     35.07 0.41    /opt/cpanel/ea-php71/root/usr/bin/php-cgi
23841 (Trace) (Kill)    ocstorecpaneluser   0     30.72 0.40    /opt/cpanel/ea-php71/root/usr/bin/php-cgi
23840 (Trace) (Kill)    ocstorecpaneluser   0     28.83 0.37    /opt/cpanel/ea-php71/root/usr/bin/php-cgi
23835 (Trace) (Kill)    ocstorecpaneluser   0     25.85 0.37    /opt/cpanel/ea-php71/root/usr/bin/php-cgi
23833 (Trace) (Kill)    ocstorecpaneluser   0     25.62 0.51  /opt/cpanel/ea-php71/root/usr/bin/php-cgi
23829 (Trace) (Kill)    ocstorecpaneluser   0     25.48 0.54  /opt/cpanel/ea-php71/root/usr/bin/php-cgi

同一个 pastebin 中包含 TOP 进程和当前 SQL 进程。

要弄清楚为什么这个 PHP-FPM 的资源使用率如此之高,我们应该从哪里开始呢?

我曾尝试降低 php.ini 中 opencart 文件夹的限制,但似乎没有太大的区别,而且我不确定哪些设置对 opencart 来说是最佳的,因为我无法在任何地方找到推荐的设置示例。

我也尝试过完全阻止到服务器的流量,这确实解决了问题,但没有告诉我更多信息,只是当网站有多个用户时会发生高使用率。

答案1

在 OC 论坛的帮助下问题得以解决。

导致问题的是 OC 的一个编写不当的扩展。检查并禁用它后,一切都解决了。

为了解决这个问题,一位论坛成员建议将 php.ini memory_limit 设置为 opencart 中尽可能低的数值。我很快发现 OC 甚至无法加载小于 250M 的页面。这是不对的,OC 应该在非常非常低的内存下运行。

在发现无法在内存不足的情况下运行后,下一个可能的罪魁祸首是 VQMOD 或插件。VQMod 不是问题所在,在遇到与导致问题的扩展相关的 SQL 错误后,我偶然能够很快找到罪魁祸首。

相关内容