关于 WordPress 网站 CPU 占用率过高甚至爆表这个问题(尤其是使用宝塔面板的),实在太常见了。不少站长忍无可忍,都找我们专门为他们专门排查和处理这个问题。
的确,CPU 使用率过高会给一切带来麻烦 – 从加载缓慢的页面到你意想不到的后台错误。最棘手的是什么?没有放之四海而皆准的原因。可能是臃肿的插件、过时的代码,甚至是自动流量在不知不觉中对服务器造成的冲击。
在你开始更换主题或升级性能更强劲的服务器之前,将占用服务器资源的原因归零是很有帮助的。本教学指南分析了 WordPress CPU 占用率过高的常见罪魁祸首,并提出了让网站重回正轨的明确方法。
什么原因导致WordPress CPU占用率过高?
1. 恶意软件或僵尸流量
像恶意软件和自动僵尸流量这样的幕后威胁是 WordPress 网站开始出现 CPU 占用率超标的常见原因。恶意软件经常会潜入并启动后台进程,悄无声息地消耗服务器的电能。与此同时,机器人可能会通过重复请求或暴力登录尝试来攻击您的网站–这些都不会增加价值,但都会占用您的资源。
应对这种压力的最佳方法之一就是在恶意软件有机会拖慢您的速度或危及您的数据之前,及早捕获并清除恶意软件。
2. 插件过多或效率低下
有些插件比表面看起来更重。当你拥有多个活动插件,尤其是功能重叠或运行后台任务的插件时,服务器就会不堪重负。即使是一个优化不佳的插件,也足以导致 CPU 使用率飙升。
3. 带有不必要功能的重型主题
有些 WordPress 主题包含各种华而不实的元素–滑块、动画、视差效果–这些元素会让网站看起来华而不实,但也会快速消耗 CPU 资源。主题中包含的功能越多,服务器加载和显示这些功能的难度就越大。选择轻量级的主题通常意味着更快的加载时间和更好的整体性能。
4. 臃肿或未优化的数据库
随着时间的推移,你的数据库会悄悄地填满许多垃圾–老版本、垃圾帖子、垃圾评论、你停止使用的插件的残留物。如果不定期清理,额外的重量会降低网站响应请求的速度。杂物越多,CPU 在提取数据时承受的压力就越大。
5. 缓存问题或根本没有缓存
如果缓存设置不当,或者根本没有使用缓存,那么服务器最终会为每个访客一遍又一遍地重建相同的页面。这在流量较小的情况下没有问题,但当更多的人访问你的网站时,很快就会出现问题。一些托管平台可以帮助您解决这个问题。
例如,部分专业的 WordPress 服务器提供商就包含多个缓存层,如 Varnish、Memcached 和 Redis。它们在幕后工作,减少服务器的工作量,保持网站快速运行。
6. 后台任务持续运行
WordPress 使用 wp-cron 来处理发布文章或发送电子邮件等计划任务。但是,如果这些任务运行得过于频繁,或者恶意代码侵入了您的 cron 作业,就会迅速占用服务器资源。
为了控制局面,最好从服务器端管理 cron 作业,而不是依赖 WordPress 的内置系统。
7. 过时的软件
旧版本的 WordPress 内核、主题或插件可能效率低下且容易受到攻击。它们更有可能相互冲突,错过性能改进,或为增加负载的安全威胁敞开大门。
8. 主机设置薄弱
有时,问题并不在于你的网站,而在于网站背后的服务器。共享主机计划通常对 CPU 能力有严格限制,一旦你的网站开始吸引更多访客或运行更多进程,速度就会迅速减慢。
9. 过大的媒体文件
上传大容量的图片文件或未压缩的视频会增加 CPU 占用率,因为服务器需要处理这些文件并将其发送给每位访客。如果不进行适当优化,媒体文件就会成为瓶颈。
我们已经详细介绍了如何增加 WordPress 中的最大上传文件大小,你一定要看看。
10. 高流量却没有足够的资源
流量突然激增对业务来说是件好事,但如果你的托管环境不具备处理流量的能力,那就不是好事了。缺乏可扩展的资源会将CPU的使用率推向极致,从而导致速度变慢或崩溃。
如何修复WordPress CPU使用率过高的问题?
有几个因素会将服务器的 CPU 推向极限,从而影响网站的速度和可靠性。让我们来看看最常见的原因及其对性能的影响。
1. 使用具有优化CPU资源的虚拟主机
共享主机环境通常带有资源上限,限制了网站在负载情况下的性能。这包括固定的 CPU 分配、内存限制和 PHP Worker 限制,这些都会在流量激增时对动态网站造成瓶颈。
另一方面,更好的主机设置会给你提供更多的工作空间。你需要根据网站的运行情况灵活调整 PHP Worker,还需要能减少重复服务器端处理的缓存层。全页面缓存、对象缓存和操作码缓存等功能有助于更快、更高效地提供内容,从而减轻 CPU 的压力。
当然更有灵活性方式,让您不用被固定的 PHP Worker 限制所束缚 – 您可以根据网站处理负载的方式对其进行调整。比如 Varnish 和 Redis 等缓存选项,帮助您的网站更快、更可靠地提供页面。
2. 删除占用大量资源的插件
有些插件会悄悄运行后台任务,严重增加网站的 CPU 负载。这些任务通常涉及实时数据收集或持续扫描,如实时流量跟踪、断链检查或错误记录。
不过,并不是一看到重型插件就得删除。有些插件还是有用的,你只需注意它们的配置方式。关闭持续的后台扫描或限制它们的运行频率,有助于减少服务器压力,同时又不会失去你所依赖的功能。
查询监控器等工具可以帮助你确定哪些插件占用了资源。激活后,查看“Queries by Component”部分。如果某个插件很突出,看看是否可以不用它,或者至少换一个更高效的替代品。
我们有一份关于如何使用 Query Monitor 调试 WordPress 性能问题的指南,你可能会觉得有用。
您还可以查看 WP Hive Chrome 扩展。它可以直接从 WordPress 插件库中显示每个插件对内存使用和性能的影响。如果您的数据库因剩余插件表或旧日志而变得杂乱无章,WP-Optimize 可以帮您清理。有时,即使只是减少活动插件模块的数量,也会带来很大的不同。
3. 启用全页面缓存
全页面缓存可以减少服务器从头开始创建页面的频率,从而大幅降低 CPU 占用率。您的网站无需在每次访问时都处理 PHP 和数据库查询,而是提供静态 HTML 版本的页面,从而保持快速、轻量。
这并不总是需要手动设置。现在,许多托管主机平台都可以通过内置工具或服务器级配置为您处理全页面缓存。
又或者使用 Object Cache,可处理更复杂的缓存需求,尤其适用于数据库庞大的网站。
如果你想更进一步,还可以使用 Redis,只需点击几下即可从服务器设置中启用。
你还可以使用 CDN,它可以提供边缘级缓存,帮助你提高网站的首字节时间(TTFB)。这意味着缓存内容将从离您的访问者最近的服务器发送,从而加快加载时间,同时减轻原始服务器的负荷。
4. 禁用WP-Cron并执行外部Cron作业
WordPress 有一个内置的 cron 系统,即 WP-Cron,它可以处理发布计划文章、发送电子邮件提醒或检查插件更新等任务。问题出在哪里?每次有人加载网站页面时,它都会运行。
在繁忙的网站上,这种持续触发会开始拖累性能。与其让 WP-Cron 在每次页面加载时都运行,你可以改用外部 cron 作业,它在服务器级别按照一致的计划运行。这样就可以避免将常规后台任务与访客流量挂钩。
大多数主机服务提供商都提供了独立于 WordPress 安排这些工作的方法。
5. 阻止恶意爬虫和恶意流量
并非所有访问 WordPress 网站的流量都来自真实用户。其中很大一部分是机器人–有些有用,有些则不太有用。虽然搜索引擎机器人(如 Googlebot)对于搜索引擎优化至关重要,但现在有越来越多的自动爬虫,它们不会带来任何价值,而且会通过不断 ping 您的页面来减慢您的网站速度。
为了保持高效运行,过滤掉垃圾爬虫很有帮助。您可以从使用 robots.txt 文件阻止不受欢迎的机器人开始。以下是基本语法:
User-agent: NameOfBot Disallow: /
要限制只访问特定目录,结构略有不同:
User-agent: BotName Disallow: /folder-name/
要检查网站的 robots.txt 文件,请在浏览器地址栏中输入您的域名,然后输入 /robots.txt。
有些爬虫会完全忽略这些指令。在这种情况下,最好使用 .htaccess 文件在服务器级别阻止它们。以下规则禁止访问特定的用户代理:
RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^BotName [NC] RewriteRule .* - [F,L] To block multiple bots in one go, list them together: RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^.*(BotOne|BotTwo|BotThree).*$ [NC] RewriteRule .* - [F,L]
下面是一个服务器的 .htaccess 文件示例,仅供参考:
如果这听起来有点太专业,或者你不想继续手动追踪僵尸,那么有一些插件可以帮你处理。有些插件会监控爬虫与网站的交互方式,当僵尸符合已知的滥用模式时,就会自动阻止访问。
另外,您还可以安装使用 Spider Analyser 插件,该插件提供蜘蛛日志统计、蜘蛛访问路径,蜘蛛爬取文章,蜘蛛拦截等一系列的功能。通过该插件将你不需要的蜘蛛、爬虫拒之门外,比起前面几种办法可能更加直观和易于操作。
6. 优化和清理数据库
如果您的 WordPress 网站的 CPU 使用率持续飙升,您的数据库可能是问题的一部分。随着时间的推移,垃圾数据会堆积起来,比如插件中遗留的条目、从未清除的临时记录以及不再需要的旧草稿。
特别是 WooCommerce 网站,它们会堆积临时数据,如购物车会话和产品缓存,这些数据只能在短时间内发挥作用,然后就闲置在那里。可以清除这些过期条目,以减轻一些后台压力。
旧插件是另一个罪魁祸首。即使你停用或删除了它们,它们也往往会留下不断被查询的表格或条目。
像 WP-Optimize 或 Advanced Database Cleaner 这样的插件可以帮助你扫描遗留数据并安全地清除它们。
如果您安装了我们的 WPTurbo 插件,您可以在插件内置的数据库优化功能模块,一键执行诸如修订历史版本、草稿、垃圾评论、回收站、过期瞬态、所有瞬态清理和数据表优化等任务。
进入数据库管理器,选择看起来臃肿的表格(如wp_options、wp_postmeta或wp_comments),然后使用优化功能对其进行整理。
7. 升级到最新的PHP版本
升级到最新的PHP版本可以大大提高网站速度,减少服务器资源的使用。PHP 8.3与旧版本相比,性能更快,效率更高。
无论是使用宝塔面本还是现在的大部分云服务器,升级或降级 PHP 版本非常简单,您可以直接从平台上进行升级或降级,不会有任何麻烦。
以上只是解决 WordPress 网站 CPU 使用率高的几种方法。可能还有其他因素在起作用,导致CPU使用率飙升,追查确切原因有时就像一场猜谜游戏。如果你无从下手,更明智的解决方案是找专业的人做专业的事情,比如我们所提供的 WordPress 技术服务。
小结
降低 CPU 使用率对于提高 WordPress 网站的性能、正常运行时间和整体健康水平至关重要。虽然本篇文章中分享的技巧可以帮助降低 CPU 负载,但往往需要反复试验才能找出确切原因。
暂无评论内容