这是在非托管的专用网络服务器上运行的
- Opencart 2.3.0.2
- PHP 7.1
- 服务器规格:
- Xenon 2.13Ghz 8 核 32GB RAM
- CentOS 7.8
- WHM v86.0.18
流量看起来像是遭到了 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 错误后,我偶然能够很快找到罪魁祸首。