如何在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感到掙扎?也許您還有其他提示。如果是這樣,我們很樂意聽到您在下面的想法。

相關文章