使用技巧

如何在WordPress网站上诊断高Admin-Ajax使用率

处理WordPress时,一种非常常见的情况是诊断admin-ajax.php的使用率很高。如果您使用WordPress已有一段时间,则在运行速度测试或检查服务器访问日志时最有可能遇到此问题。这通常是由于Heartbeat API(例如自动保存草稿)导致的第三方插件或频繁出现的管理仪表盘请求所致。重要的是,您可以在看到高admin-ajax.php峰值时对其进行诊断,因为众所周知,它们会导致站点爬网。查看以下有关解决WordPress中admin-ajax.php问题的方法的建议。

  • 什么是admin-ajax.php文件?
  • 插件可能导致admin-ajax.php溢出
  • 后端admin-ajax.php的CPU问题

什么是admin-ajax.php文件?

正确使用admin-ajax.php文件本身并不是一件坏事。它是核心的一部分,由WordPress开发团队在3.6版中添加。admin-ajax.php的目的是使用AJAX在浏览器和服务器之间创建连接。这允许扩展功能,例如改进自动保存,修订跟踪,登录超时,会话管理以及存在多个编辑器时有关帖子被锁定的通知。这些都是很棒的功能,特别是对于那些与多个管理员和作者一起工作的人而言。

这个想法是要有一个相对简单的API,该API每15秒将XHR请求发送到服务器,并在接收数据时触发事件(或回调)。其他组件将能够“搭便车”或获得有关其他用户活动的通知。这可用于阻止同时编辑小部件和菜单或需要服务器定期更新的任何其他任务。-使WordPress核心

对于那些可能不精通技术的人,您唯一接触到admin-ajax.php的原因可能只是您试图弄清楚为什么它会减慢在Pingdom等工具中进行速度测试的速度(如所见)在下面的示例中)。否则,您可能会在主机的访问日志中看到大量的请求。

高管理员使用率

高admin-ajax.php使用

在速度测试和访问日志中看到admin-ajax.php通常是两种情况发生的结果,一个是前端,另一个是后端,我们将在下面进行介绍。

1.插件可能导致admin-ajax.php溢出

人们在admin-ajax.php中看到的第一个也是最常见的问题是由第3方插件生成的问题。这通常在前端看到,并显示在速度测试中。开发人员利用此文件或AJAX向其插件添加功能。但是,仅因为您看到对admin-ajax.php的请求,并不一定意味着它会使您的网站变慢。AJAX在页面加载后加载,并且某些请求可以异步加载。但是,这并不总是意味着开发人员会以正确的方式进行操作,也不一定意味着有效地对其进行了编码以提高性能。对于开发人员,以下是有关如何在WordPress主题和插件中正确使用AJAX的一些技巧。

以下是几个有关如何快速诊断admin-ajax.php峰值的示例。我们正在使用GTmetrix,因为它使我们能够深入研究各个帖子和响应数据。不幸的是,Pingdom不允许您查看请求表单数据。您也可以使用Google Chrome Devtools或WebPageTest

Visual Composer插件的高级admin-ajax.php Spike

这是我们发现的第三方WordPress网站,使用admin-ajax.php遇到了一些非常大的峰值。如您所见,GTmetrix报告的峰值超过8秒!他们的瀑布的其余部分看起来都不错,但这绝对是网站所有者必须解决的问题。

长管理员ajax请求

开机自检admin-ajax.php

如果单击POST admin-ajax.php请求,则可以看到三个不同的选项卡:标头,发布和响应。诊断这些类型的问题时,您确实对“发布”和“响应”选项卡的内容感兴趣。对于此站点,我们可以在“响应”选项卡中立即看到线索。我们可以看到请求的一部分与“ vc_shortcodes-custom-css”脚本有关。

管理员后回复

POST响应

快速复制并粘贴到Google中,我们可以立即看到它来自WordPress的Visual Composer页面构建器插件。您会对Google索引的数量感到惊讶。

vc-shortcodes可视作曲admin-ajax

视觉作曲家搜索

该人员的下一步应该是确保他们的Visual Composer插件是最新的。如果是这样,他们应该与该插件的开发人员联系,并使用admin-ajax.php报告问题。实际上,这似乎是此插件的常见问题,如Stack Overflow上的这篇文章所见。WordPress的优点在于,如果开发人员无法解决您的插件问题,则很可能有替代插件可供您尝试做同样的事情。例如,对于页面构建器,您还可以尝试Beaver BuilderElementor

来自通知栏插件的高admin-ajax.php峰值

这是我们开发人员网站上的第二个示例。安装了某个第三方插件后,我们立即看到admin-ajax.php的巨大峰值。

admin-ajax gtmetrix慢

慢的admin-ajax.php请求

同样,如果您单击POST admin-ajax.php请求,则需要进一步调查。我们可以看到,在帖子数据中,其具有“ action = mtsnb_add_impression&bar_id = 88&ab_variation = none”。

gtmetrix发布数据

开机自检动作数据

通常,后操作的第一部分还将与插件中的CSS类相关。因此,我们再次在Google中快速搜索“ mtsnb”,然后弹出的第一个结果实际上是我们在开发站点上运行的Notification Bar插件。

mtsnb

搜索mtsnb操作

如果您是开发人员,那么当然还有其他方法可以跟踪哪个插件可能生成POST响应,但是我们发现快速速度测试和Google搜索也可以非常有效。

Surefire确定admin-ajax.php起源的方法

以上是一些简单的方法,可以在WordPress网站上快速找到可能导致此问题的插件。根据我们的经验,这种方法在99%的时间内都有效。但是在其他情况下,发布数据或操作可能不太清楚,您始终可以采用旧的方法。只需禁用WordPress网站上的所有插件即可。如果找不到admin-ajax.php,请在您的网站上进行速度测试,并在每次运行测试时逐个重新启用每个插件。使用消除法是找到原点可靠方法

这也是Kinsta的暂存环境 派上用场的绝佳时机。只需将您的WordPress网站复制到分期并运行测试,而不会影响您的实时网站。确定原因后,就可以对实时站点进行更改。

MyKinsta分析中的AJAX使用情况报告可以作为另一种帮助您解决此类问题的好方法,因为您可以确定在某些时期内是否看到某些AJAX峰值。

性能监控AJAX使用

性能监控AJAX使用

2.后端admin-ajax.php的CPU问题

第二个主要问题是WordPress Heartbeat API使用admin-ajax.php 来运行来自网络浏览器的AJAX调用,这可能会导致CPU使用率过高。每个AJAX请求还会加载完整的WordPress后端,同时避免所有形式的缓存。通常,您不会在速度测试中看到此情况。对于那些正在使用廉价共享主机的用户来说,了解这一点尤其重要,因为它们在CPU使用率方面没有太多回旋余地。WP Tavern经历了第一手的攻击,由于多次停赛,实际上 从HostGator迁移了出去。

您必须要小心的一种情况是在WordPress中自动保存并打开标签页。例如,我们在开发站点上启动了新草案,并打开了选项卡。默认情况下,Heartbeat API每15秒轮询admin-ajax.php文件以进行自动保存。您可以在MyKinsta仪表板的访问日志中看到以下内容。如果我们要打开选项卡并保留计算机,那么仅一个帖子就可能一天产生5760个请求!

遇到停机和WordPress问题吗?Kinsta是旨在节省您时间的托管解决方案!查看我们的功能
发布admin-ajax.php请求

频繁自动保存admin-ajax.php请求

一个人在后端有很多请求。但是,如果您要处理的站点中有多个编辑者,会发生什么情况?这些请求会迅速增加。实际上,在我们最近与DARTDrones进行的案例研究中,我们确实经历了这一点,我们在其中帮助他们扩展了Shark Tank的WooCommerce网站。他们在24小时内仅2,000个唯一身份访问者就收到了4,100多个admin-ajax.php呼叫。请求访问的比例不是很大。我们能够通过wp-admin引荐来源网址确定此网址,该网址是由于其管理员更新网站以准备演出而生成的。

管理员Ajax使用率高
dartdrones.com上繁重的admin-ajax.php用法

不过,有一种方法可以解决自动保存,修订,锁定等方面的后端admin-ajax.php上的轮询问题。这是Jeff提供的免费Heartbeat Control插件的地方Matson发挥了作用。

心跳控制

心跳控制插件

Heartbeat控制插件当前具有80,000多个活动安装,其中5颗星评分为4.5分。您可以从WordPress存储库下载该文件,也可以在WordPress仪表板的“添加新”插件下搜索该文件。

该插件使您可以通过一些简单的规则来管理WordPress心跳API的频率。我们建议您禁用除后期编辑页面以外的所有功能。因此,首先在“ WordPress仪表板”和“前端”上添加一个禁用心跳的规则。

在仪表板和前端禁用心跳控制

在仪表板和前端禁用心跳控制

其次,您需要修改心跳行为。因此,请确保已选择“ Post Editor”,并将频率从默认的15秒更改为60秒。这可以帮助您大大减少请求数量并节省服务器资源(减少CPU负载)。

将心跳控制修改为60秒

将心跳控制修改为60秒

您还可以使用高级插件,例如perfmatters  (由Kinsta的团队成员开发),该插件 可让您禁用心跳,更改心跳频率以及修改自动保存间隔

禁用和限制心跳加速器

使用perfmatters禁用和限制心跳– admin-ajax.php请求

概要

如您所见,有一些快速简便的选项可以诊断和解决admin-ajax.php问题。通常,它们来自第三方插件,它们可能彼此冲突或编码错误。如果由于admin-ajax.php而在后端遇到CPU负载,则可能还需要考虑像Kinsta这样的托管WordPress主机,他在处理这类性能问题方面经验丰富。

您是否在WordPress网站上使用admin-ajax.php感到挣扎?也许您还有其他提示。如果是这样,我们很乐意听到您在下面的想法。