调试WordPress性能问题清单

调试WordPress性能问题清单

今天,我们将深入探讨如何调试WordPress性能问题,以及帮助大家​​解决问题的工具和策略。虽然像这样的每个案例都相当独特,但故障排除的工作流程通常保持不变。希望下次您发现自己遇到WordPress性能问题超出您的理解或控制范围时,您可以使用它。

WordPress性能清单(当事情发生时)

这个性能检查表有点不同。这不是分享如何加快WordPress网站的速度,而是重点介绍下一次您发现自己陷入困境时该怎么做。并且会有下一次,你可以指望它。也许您的主机已经伸出手说您的站点使服务器过载。或者您可能已经注意到某些东西正在拖累您的网站,例如非常流行的admin-ajax.php请求。

在举起双手并宣布退出之前,请遵循以下建议。一切都有答案,但有时很难找到答案。 

  1. 实施性能监控
  2. 利用New Relic等工具
  3. 利用测试环境——这是有原因的
  4. 投资更好的服务器
  5. WordPress维护服务
  6. 不要害怕向开发者提出问题
  7. 您可以随时雇用WP开发人员

1. 实施正常运行时间和性能监控

当涉及到这些类型的问题时,您永远不会做好充分的准备。要确保在访问者之前了解站点故障,您可以做的最好的事情之一是实施正常运行时间和性能监控

正常运行时间监控

正常运行时间监控

事实上,多亏了New Relic Synthetics和APM,我们还可以在需要时监控有关WordPress站点的多个不同数据点:

  • 最终用户加载时间
  • 应用服务器加载时间
  • 错误率
  • 吞吐量
  • 成功率(正常运行时间)
  • Apdex分数

Apdex分数

Apdex分数

这与正常运行时间和性能监控有关。

有时,这可能涉及牵扯第三方开发人员,尤其是在错误代码是根源的情况下。或者这可能意味着需要增加PHP worker。最后,它可能是很容易修复的东西。

我们希望您取得成功,为您的访问者提供一个快速的网站始终是我们的首要任务之一。如果我们可以查明插件 A 导致您的网站关闭,我们希望您知道。通常情况下,我们往往会看到许多性能问题源于糟糕的插件更新、拙劣的代码或不支持最新版本的PHP等。

正常运行时间和性能监控工具

您还可以使用许多第三方工具来提醒您正常运行时间和性能。以下是您可能想要查看的一些内容:

  • updown.io  (正常运行时间监控)
  • Pingdom  (正常运行时间和性能监控)
  • Uptime Robot  (正常运行时间监控)
  • StatusCake(正常运行时间和性能监控)
  • ManageWP(正常运行时间和性能监控)

2.利用New Relic之类的工具(它们是无价的)

New Relic这样的工具不仅非常适合监控正常运行时间和性能,而且在解决性能问题源自。或者您可以尝试使用像Query Monitor这样的免费插件。

New Relic中有几个地方可以帮助快速缩小性能问题。第一个是“WordPress → 插件和主题”选项卡。在我今天用作案例研究的woorkup网站上,我可以立即看到我遇到的问题很可能来自我运行的“gp-premium”插件。但为什么?好吧,我们会做到这一点。

New Relic插件和主题

New Relic插件和主题

注意:New Relic中的上述部分并不总是100%准确。在这种情况下,它是。但总是建议至少先检查那里。

因此,在看到之后我有一种很好的感觉或预感,它是我的“gp-premium”插件(这是我的GeneratePress WordPress主题的扩展)中的东西。知道这一点后,我转到了“事务Transactions”选项卡。我们可以立即看到admin-ajax.php事务的数量排在了第一位!

New Relic监控admin-ajax.php问题

New Relic监控admin-ajax.php问题

对于那些没有New Relic的人,请务必查看我们关于如何诊断WordPress站点上admin-ajax使用率高的教程。您还可以在WordPress日志中看到持续的admin-ajax请求。

下一步是深入研究admin-ajax.php事务并查看消耗最多时间的数据库查询。您可以单击“Trace Details”或 “Database queries” 选项卡。

数据库查询跟踪

数据库查询跟踪

有时查询本身将指示问题所在,但在这种情况下,它不是。别的东西,但立即有些东西脱颖而出,那就是/gp-premium/文件夹。请记住,从上面我们看到“gp-premium”应该是导致问题的插件。通常,如果您在插件/主题部分以及跟踪部分中都看到它,则表明这是一个很好的起点。

...s/gp-premium/library/image-processing-queue/includes/wp-background-process.php

堆栈跟踪

堆栈跟踪

下一步是前往谷歌!是的,在这种情况下,谷歌实际上可以提供很大帮助。

所以我搜索了“Image Processing Queue”。返回的第一个结果是Delicious Brain的Image Processing Queue插件。阅读说明后,我可以看到这是用于WordPress主题的图像处理。本质上,图像大小是使用WP Queue在后台悄悄生成的。

Image Processing Queue

Image Processing Queue

快速搜索同一个术语以及“GeneratePress”导致他们最近的更新日志出现。是的,最近在GeneratePress中将图像调整器从Aqua Resizer更改为Image Processing Queue。就在我更新主题的时候,我的网站上没有任何其他变化。这就是变更日志如此重要的原因! 它们可以像用于故障排除的面包屑一样。

GP更新

GP更新

令人费解的是,我有其他运行GeneratePress的站点没有这个问题。因此,虽然我可能对正在发生的事情有很好的了解,但我仍然不能100%确定。因此,下一步是打造我的临时环境以开始调试WordPress

3. 在不涉及生产的情况下利用测试站点

您可以使用WP Staging之类的插件来搭建测试环境。

在开发站点启动并运行后,做的第一件事就是批量禁用我的所有插件。我注意到很多人倾向于忽略这个简单的步骤。这几乎就像认为重新启动计算机不会解决问题一样。

重要的是始终首先禁用所有插件。这是迄今为止缩小问题范围的最简单方法之一。只需转到插件,选择所有插件,然后从批量选项中选择“停用”。

禁用所有WordPress插件

禁用所有WordPress插件

在New Relic执行此操作后,我的站点上的响应时间立即恢复正常。所以我知道这是一个导致问题的插件。而且由于我已经在上面做了一些故障排除,我有一种预感,它仍然是“gp-premium”插件。

正常响应时间

正常响应时间

所以我重新启用了“gp-premium”插件来验证我可以复制这个问题。是的,加载时间(网络事务时间)立即回升。

再次响应时间长

再次响应时间长

所以我可以确认100%是插件。但是现在呢?这无助于解决我的问题。好吧,由于它似乎来自图像处理队列,因此下一个提示是检查CRON作业和瞬态。每当您有任何类型的队列时,请务必检查这些区域。事实上,我总是建议检查它们。自动加载的数据也是另一个常见的罪魁祸首。

建议阅读:如何修复WordPress Missed Schedule错误(2 种方法)

瞬态是WordPress缓存的一种简单形式,附加了到期时间。为了快速查看我的瞬变,我安装了来自皮平威廉姆森的免费Transients Manager插件。再次发射时,有什么东西立刻引起了我的注意,那就是一个叫做wp_image_processing_queue_process_lock的瞬态项目。” 此外,它被设置为1分钟后到期,新的不断弹出。

瞬态

瞬态

虽然插件本身确实有删除瞬态的方法,但它不起作用。所以是时候查看数据库了。所以我登录到phpmyadmin。瞬态存储在wp_options表中,因此我从“Search”选项卡进行了快速查询,以查找包含该选项名称的任何行。

SELECT * FROM wp_options WHERE option_name LIKE '%wp_image_processing%'

事实证明,有695846行用 %wp_image_processing%

wp_image_processing

wp_image_processing

这是测试环境派上用场的地方。由于破坏或测试东西没有害处,我继续手动删除包含它的所有行。我从“SQL”选项卡运行以下查询以删除包含此选项名称的所有行:

DELETE FROM wp_options WHERE option_name LIKE '%wp_image_processing%'

删除行

删除行

就像魔术一样,删除行后,我网站的响应时间立即恢复正常。

注:如果你在生产环境操作,则需要先对数据库进行备份,以免出现问题。

修复了WordPress性能问题

修复了WordPress性能问题

正如我之前所说,这在我使用GeneratePress的其他网站上没有发生。他们在数据库中也没有那些额外的临时行。也许在升级某些东西时并没有像预期的那样被删除。所以看起来这不是开发人员的错,而可能只是临时缓存的损坏。

任何插件或主题都可能发生这种情况。 事实上,GeneratePress是我有史以来最喜欢的WordPress产品之一。害怕了吗?好吧,这些是WordPress带来的一些乐趣!

如果您不理解上述任何内容,那么在解决此类问题时,我强烈建议您查看以下其余步骤。

4. 投资更高级的主机

与某些人可能会让您相信的不同,不存在可以神奇地修复错误代码的架构或主机。 诸如糟糕的插件更新之类的小事,或者在这种情况下,损坏的瞬变,都会使WordPress屈服!优秀的主机应该拥有自动备份、暂存环境和New Relic集成等。这些功能和工具有助于保护您的站点并快速解决问题。

WordPress支持

WordPress支持

建议您选择使用任何主机,确保他们的支持团队能够提供及时和专业的服务!

当然,在性能方面,基础设施确实很重要,而不是在负载下屈曲。

5. WordPress维护服务

在过去五年左右的时间里,业界出现了一种新型公司:WordPress维护服务提供商。这些公司在某些情况下可以接管您所有繁琐的WordPress任务。这里仅举几个例子:

  • 谷歌搜索控制台设置
  • 谷歌分析集成
  • 每周关键词排名报告 + 分析报告
  • 社交媒体分析应用
  • 手机+平板优化
  • 插件开发
  • 无限编辑(没错,有些甚至会做一些小任务,例如更新您的徽标、添加WooCommerce产品等)

是的,其中很多都提供每日或每周的正常运行时间和性能监控。以下是您应该查看的一些WordPress维护公司。

SkyrocketWP

SkyrocketWP提供WordPress维护服务、支持和托管解决方案,旨在为希望发展业务的人们处理WordPress。

SkyrocketWP

SkyrocketWP

WP-Tonic 

WP-Tonic为忙碌的企业主提供真正精品的礼宾支持和维护服务。没有时间解决您的WordPress问题?让WP-Tonic为您处理。他们还运行一个流行的播客,在其中采访WordPress企业主和开发人员,以了解行业内正在发生的事情。

WP-Tonic 

WP-Tonic

WP Buffs

WP Buffs为严肃的网站所有者和白标代理合作伙伴提供WordPress护理计划。

WP Buffs 

WP Buffs

6. 不要害怕向开发者提出问题

在确定可能导致WordPress性能问题的原因之后,不要害怕向开发人员提出问题!很多时候,开发人员非常乐于提供帮助,事实上,他们希望在发生故障时了解情况,以便他们可以为每个人推出修复程序。

我联系了GeneratePress的开发人员Tom,他像往常一样立即做出了回应。我们将这个问题抛到了破坏瞬态的问题上,但正如你所看到的,他实际上将切换他们的图像排队方法(部分原因是这个)。因此,您作为用户的反馈绝对可以帮助开发人员做出更高级的决策,以决定在他们的插件或主题中实施或更改什么是最好的。

来自WordPress开发者的回应

来自WordPress开发者的回应

我们也有计划推出专门针对WordPress的问题解答专区,敬请期待!

7. 您可以随时聘请WordPress开发人员

如果最坏的情况发生,您可以随时聘请WordPress开发人员来解决您的问题。也许您发现您使用的插件确实有一些糟糕的代码,而创建者无法或不会修复它。

聘用开发人员的难点在于如何找到声誉良好且擅长其工作的人?

强烈推荐Codeable,他们的开发人员在被允许加入服务之前都经过了预先筛选,Codeable员工会亲自审查技术人员简历。他们有超过25,000名客户,但只有300名WordPress专家。仅接受2%的申请者。他们只想要最好的,作为客户,这反过来可以为您节省大量时间和挫折。

Codeable的WordPress开发人员职位

Codeable的WordPress开发人员职位

他们致力于提供WordPress外包服务,并完全专注于将有才华的开发人员与客户相匹配。

其他资源

编写了一些额外的资源来帮助您解决一些WordPress调试性能问题:

小结

无论您是否精通技术,在解决WordPress性能问题时,总有可用的解决方案。第一个明显的建议是通过选择不仅拥有坚如磐石的基础设施而且拥有世界一流的支持团队来支持它的托管服务提供商,为自己取得成功做好准备。您最不希望发生的事情是您的WordPress网站宕机或龟速运行,因为您不知道接下来要采取哪些步骤。

利用New Relic等工具,它可以在调试问题时为您节省时间。归根结底,通过社区中求助大量才华横溢的WordPress开发人员也是个好办法,甚至直接雇用一个(有条件的情况下)。

评论留言