New Relic APM是一個強大的工具,可以深入瞭解WordPress網站的內部工作原理,以查明外掛、主題模板檔案、資料庫查詢、外部呼叫或導致客戶網站效能問題的編碼錯誤。
然而,讓New Relic執行只是一個開始。如果您從未使用過New Relic APM(即使您使用過),您可能很難充分利用這個強大的工具。在本教程中,我們將向您展示如何使用New Relic APM來診斷和修復WordPress站點上的效能問題。
New Relic APM概覽
New Relic APM
那麼什麼是New Relic APM?就我們的目的而言,以下定義適合:
New Relic APM是一個Web應用程式,可提供有關WordPress站點效能的詳細資訊。
您可以通過向PHP新增擴充套件來安裝New Relic 。該擴充套件程式偵聽PHP處理的每個請求,然後將該資訊傳送回New Relic儀表板。然後,New Relic將該資訊組織成一系列圖表和圖形,您可以使用它們來診斷網站的效能問題。需要注意的是,HHVM不支援New Relic。
讓我們快速瀏覽一下New Relic的主要資料視覺化。
概述
New Relic APM概述
概覽提供了網站整體效能的快速快照。您不會從該螢幕診斷特定問題,但顯示PHP、MySQL和外部呼叫如何協同工作的便捷編譯可以為您指明正確的方向。
事務
New Relic Transactions選項卡
事務(Transactions)選項卡是New Relic中最有用的選項卡。
學會喜歡事務選項卡,您將能夠深入瞭解緩慢的事務,以識別資料庫呼叫、外部資源或降低站點速度的程式碼瓶頸。事務檢視中特別有趣的是慢Transactions列表。要檢視列表,請向下滾動到事務選項卡的底部,然後檢視頁面的右下方。
New Relic Transactions跟蹤
在這裡,您將找到New Relic捕獲的最慢事務的列表。我們現在不會在此部分上花費更多時間,但稍後我們將解釋如何使用此部分來診斷您網站的問題。
WordPress鉤子
WordPress鉤子
WordPress掛鉤選項卡提供了通過WordPress操作掛鉤觸發的所有PHP函式消耗的時間的視覺化。此資訊對有經驗的開發人員很有用,他們可以使用這些資訊從過載的鉤子中逆向工作,以識別由鉤子觸發的函式。
WordPress外掛和主題
WordPress外掛和主題
WordPress外掛和主題選項卡顯示外掛和活動主題消耗了多少PHP處理時間。如果單個外掛或您的站點主題消耗了大量時間,此頁面可以幫助您快速找到導致問題的外掛或主題。
需要注意的是:New Relic中的WordPress外掛和主題選項卡最容易被濫用。
在調查網站效能問題時,很容易預設首先檢查此選項卡,然後簡單地停用最耗時的外掛。然而,這樣做是忽略了在New Relic其他地方發現的有價值的資訊。這類似於治療症狀,而不是挖掘並找到根本原因。
由於錯誤配置問題,外掛可能執行緩慢,例如由於使用了不正確的SMTP埠號,成員資格管理外掛執行緩慢。或者外掛可能沒有被正確解除安裝。這是您可能通過在“事務”選項卡中鑽取緩慢交易獲得的資訊型別,並且您永遠無法通過簡單地停用New Relic報告的最慢的外掛來解決問題。
因此,請熟悉此選項卡,但不要排除New Relic提供的其餘資訊。
資料庫
New Relic MySQL概述
資料庫選項卡,您可以識別的查詢佔用了大部分時間的資料庫表和型別。New Relic將此資訊與進行這些查詢的事務聯絡起來。您可以使用此資訊來識別可能需要優化的資料庫表和對資料庫施加過大負載的模板檔案。
外部服務
New Relic外部服務
大多數WordPress網站依賴於許多外部服務:
- 外掛、主題和核心更新由wordpress.org以及外掛和主題開發人員提供。
- 許多外掛與第三方API整合,例如WPMU DEV的Smush影象優化外掛(來自上面截圖的smushpro.wpmudev.org)。
- 聊天外掛通常由外部服務提供支援。
- 許多站點都與社交媒體平臺整合,以便在這些網路上共享內容時實現最佳呈現和效能。
當這些外部服務中的任何一個停止及時響應時,它可能會使您的整個網站崩潰。
在外部服務選項卡可以讓你快速檢視哪些外部服務佔用了大部分的時間。然後,您可以使用該資訊來確定是速度問題(服務響應緩慢)還是數量問題(對外部源的呼叫過多),並努力解決問題。
錯誤分析
New Relic錯誤分析
錯誤分析選項卡報告同時載入你的WordPress網站遇到的PHP錯誤。錯誤按類別分組,以便您可以快速檢視正在生成多少不同型別的錯誤。錯誤還與產生錯誤的實際事務相關聯。如果您選擇特定錯誤,您還可以看到生成錯誤的事務的完整堆疊跟蹤。
將錯誤分析視為組織得更好的PHP錯誤日誌。當試圖追蹤產生PHP錯誤的檔案和發生這些錯誤的事務時,它可以證明是無價的。
除錯載入緩慢的頁面
我們使用New Relic進行除錯的最常見問題是特定頁面或程序載入時間過長的情況。發生這種情況時,New Relic APM中的事務選項卡幾乎肯定是第一個去的地方。
您需要遵循的過程來診斷載入緩慢的頁面非常簡單:
- 複製緩慢的事務。
- 在New Relic的慢事務列表中找到該事務。
- 檢視事務摘要和跟蹤詳細資訊以確定效能下降的原因。
讓我們看一個例子,以及如何使用New Relic來診斷問題。
第1步:複製事務
讓我們看一個例子。在這個例子中,我們的客戶端在每次載入單個部落格文章時都會看到載入緩慢。所有其他頁面正常載入,但個別文章需要幾秒鐘才能載入。
所以第一步是複製問題。在這種情況下,這意味著訪問單個部落格文章幾次以確保New Relic捕獲必要的日期。
第2步:找到慢事務
多次複製慢速事務後,前往New Relic並選擇Transactions選項卡。然後向下滾動,直到您在New Relic儀表板的右下方看到慢事務列表。
New Relic事務緩慢
單擊您正在除錯的事務以檢視詳細資訊。
第3步:檢視事務摘要和跟蹤詳細資訊
選擇事務後,將顯示事務摘要。
慢事務總結
通過摘要,您可以檢視對事務處理時間有貢獻的元件的快照概覽。在我們的示例事務中,對外部資源www.googleapis.com的呼叫負責5,000毫秒的事務,該事務總共需要5,350毫秒才能完成。
雖然這是有用的資訊,但跟蹤詳細資訊選項卡將提供我們需要準確瞭解正在發生的事情的詳細資訊。
慢事務跟蹤詳細資訊
跟蹤詳細資訊選項卡提供了一個分層的分步瀑布圖,顯示了PHP在生成頁面時處理的函式、資料庫查詢和外部呼叫。
在我們的示例事務中,跟蹤詳細資訊顯示對Google分析URL的呼叫是阻止該過程的原因。如果我們從那個請求向後工作,它會啟動一個名為gapp_get_post_pageviews
的PHP函式。對該交易的快速Google搜尋顯示它是Google Analytics Post Pageviews外掛的一部分。該外掛安裝在站點上,用於向粘性標題欄新增檢視計數器。
New Relic剛剛允許我們將粘性標題欄中的檢視計數器隔離為主要元件,導致在相關站點上緩慢載入單個部落格文章。現在,該站點的所有者確切地知道在嘗試解決單個部落格文章載入緩慢的問題時要針對哪個元件。
修復整體緩慢
我們為客戶排查的第二種最常見的問題是抱怨整個網站載入緩慢。當每個事務都需要大量時間來載入時,可能會發生以下三件事之一:
- 該站點缺乏伺服器資源。
- 外掛或活動主題導致問題。
- 站點資料庫正在努力跟上查詢速度。
站點缺乏CPU或RAM,這可能會導致整體緩慢,New Relic不會固定在任何單個資源上。因此,如果您確實看到整體緩慢並且New Relic表明站點的每個部分都在做出貢獻,請檢查伺服器上的負載,看看是否是伺服器資源短缺造成的。
如果您的站點可以訪問大量伺服器資源,那麼您需要檢查以診斷整體緩慢的下一個位置包括WordPress外掛和主題選項卡、外部服務選項卡和資料庫選項卡。
以下是可以使用這些選項卡中的每一個進行診斷的整體緩慢的示例。
外掛導致的整體緩慢
當外掛導致整體緩慢時,症狀會根據外掛執行的活動而有所不同。但是,在許多情況下,您會發現一個緩慢的外掛會影響WordPress網站的每個頁面。對於您在下圖中看到的資料的站點,在站點的每個前端頁面上都觀察到整體緩慢。
以下是New Relic對網站外掛效能的評價。
WordPress外掛
您可以立即看到adinjector外掛消耗的時間是下一個最慢外掛的15倍。
當您看到這樣的資料時,您可能會立即認為該外掛編碼不當或無效。雖然有時是這種情況,但並非總是如此。外掛配置錯誤、資料庫緩慢或響應緩慢的外部資源可能會導致外掛消耗大量時間。
因此,當您看到響應緩慢的外掛時,最好檢查New Relic中的其他幾個螢幕以查詢其他資訊。在決定停用外掛是最好的還是唯一的方法之前,應該檢查事務、資料庫和外部資源。
外部服務造成的整體緩慢
如果網站依賴於對外部服務的呼叫來生成頁面瀏覽量,並且該服務停止響應或需要很長時間才能響應,則結果可能是WordPress網站完全停止載入。
前5名外部服務
上面的圖片來自制作上面的慢速外掛螢幕截圖的同一站點。如您所見,有一個外部服務佔等待外部服務所花費的總時間過大。
這個案例說明了為什麼在得出結論之前需要結合檢視資訊。在這種情況下被呼叫的服務是在最後一步中確定的外掛的開發者。
此資訊為情況增加了一些細微差別。據說,問題不是外掛的程式碼。相反,看起來該外掛對開發人員的網站進行了大量呼叫,而這些呼叫結合起來考慮會消耗大量處理時間。
如果我們更進一步並檢視此站點的緩慢事務,我們可以看到此外部呼叫似乎正在檢查相關外掛的許可證狀態,這表明此特定外掛的許可證可能已過期.
無論如何,我們現在可以告知該站點的所有者,adinjector外掛導致效能下降,而效能下降是由於反覆呼叫開發人員的網站以檢查外掛的許可證狀態。
資料庫不堪重負導致整體緩慢
優化不當的資料庫可能會導致WordPress網站的整體執行緩慢。我們始終推薦的一種優化是將您的資料庫從MyISAM轉換為InnoDB。在New Relic中,這種與資料庫相關的緩慢很可能會出現在兩個地方:
- 首先,您將在概覽中看到大量的MySQL活動。
- 其次,您會在資料庫選項卡中看到一個或多個資料庫表佔用了大量時間。
從概覽螢幕開始,一個有困難資料庫的站點可能看起來像這樣:
網路事務耗時
要更好地處理導致問題的資料庫表或查詢,請前往資料庫選項卡。
MySQL概述
資料庫選項卡將指出消耗最多時間的表和查詢型別。如果您選擇列表中的條目之一,您可以看到更多詳細資訊,包括一些示例查詢。
慢查詢 – wp_options表
在這種情況下,資料指向wp_options表中自動載入的資料。果然,對wp_options表的快速分析證實,從該表自動載入了近250MB的資料,使該站點成為資料庫維護和優化的明顯候選。檢視我們關於如何優化wp_options表和自動載入資料的更深入的文章。
小結
一旦您知道如何使用它,New Relic就可以成為識別WordPress網站上PHP效能瓶頸的寶貴工具。要充分利用New Relic,瞭解WordPress、瞭解每個選項卡報告的資訊並瞭解所有資訊之間的相互關係至關重要。
評論留言