我经常收到来自 AWS Lightspeed 服务器的高 CPU 使用率警报。配置为 2vpu、4gb ram、80gb ssd。我使用 RunCloud 进行服务器管理,并且有大约 10 个流量非常低的 WordPress 网站。
我在所有网站上都使用相同的设置运行 WordFence,我已尽可能地调整这些设置以降低资源使用率并加强安全性。例如,在 3 次尝试后锁定 2 个月、设置爬虫和人类的速率限制、低资源扫描、在仅安全模式下记录流量。
我还使用了 RunCloud 的插件,它提供了 NGINX 缓存、Redis 对象缓存以及为所有站点启用的 CloudFlare。
偶尔 MariaDB 会崩溃,导致我的所有网站瘫痪。自从 WordFence 进行最新调整以来,它还没有发生过这种情况,但我不能确定它不会发生。
当我运行“top”时,我可以看到偶尔有进程从 php-fpm 运行高达 99%。一些使用来自 WordFence,但我还看到很多以下情况:
大多数时候,当我运行(几秒钟内)s-trace p xxxxx时,我会得到 strace:attach:ptrace(PTRACE_SEIZE,xxxxx):没有这样的进程
当我得到结果时,我会看到很多类似的东西:gettimeofday({tv_sec = 1691575885,tv_usec = 447551},NULL)= 0(许多结果)
accept(25, 0x7ffe63704c60, [112]) = ? ERESTARTSYS(如果设置了 SA_RESTART,则重新启动) --- SIGQUIT {si_signo=SIGQUIT, si_code=SI_USER, si_pid=502, si_uid=0} --- close(25) = 0 socket(AF_UNIX, SOCK_STREAM, 0) = 4 rt_sigreturn({mask=[]}) = -1 EINTR(中断的系统调用) munmap(0x7f0b4d8ca000, 65536) = 0 ....
我还看到很多这些类型的消息: newfstatat(AT_FDCWD,“/home/runcloud/webapps/xxxx/wp-content/plugins/wordfence/vendor/composer/jetpack_autoload_classmap.php”,0x7ffe636fdc20,AT_SYMLINK_NOFOLLOW)= -1 ENOENT(没有这样的文件或目录) readlink(“/home/runcloud/webapps/xxxxx/wp-content/plugins/wordfence/vendor/composer/jetpack_autoload_classmap.php”,0x7ffe63702de0,4095)= -1 ENOENT(没有这样的文件或目录)
Jetpack 已在此应用程序和所有其他应用程序上停用并删除,但 WordFence 似乎在不断搜索它。
这些进程消耗了大量的资源并且经常导致服务器脱离可突发区域。
有人能解释一下这些含义以及如何配置服务器吗?
由于我根本不是系统管理员,只是试图托管一些 WordPress 网站,所以我不知道这些意味着什么,也不知道要查找什么。如果有人可以建议我是否需要发布完整的输出,我可以这样做。
答案1
当我得到结果时,我会看到很多类似的东西:gettimeofday({tv_sec = 1691575885,tv_usec = 447551},NULL)= 0(许多结果)
这很可能是由 PHP 中检测到的错误引起的。Wordpress 中的默认行为是抑制错误报告 - 但在带有插件的典型 Wordpress 安装中,每个请求都可能生成大量错误。请注意,PHP 仍然手柄错误-它只是没有出现在任何日志中。
Wordpress 描述日志记录作为“调试模式”。
Jetpack 已在此应用程序和所有其他应用程序上停用并删除,但 WordFence 似乎在不断搜索它。
你确定它已被删除了吗?通过 API?包括目录?如果你没有wpcli- 得到它并检查。
MariaDB 偶尔会崩溃
嗯。我运行过几个 Wordpress 安装(20-40 个),流量适中,mysql 和 mariadb 从未崩溃过。
如果启用日志后仍无法获得解释,您可能需要查看 xhprof 或 excimer。