OpenResty XRay 是一款強大的動態追蹤工具,能夠幫助開發者和運維人員深入分析各種應用程式的效能問題。它的特點包括非侵入式分析、極低的效能損耗,以及適合在生產環境中使用。這些特性使得 OpenResty XRay 成為一個理想的線上實時分析工具,可以在不影響應用正常執行的情況下,持續監控和診斷效能問題。在我們之前的部落格文章 [《使用 OpenResty XRay 分析 Java 應用》](https://blog.openresty.com.cn/cn/java-analysis/) 中,我們詳細介紹瞭如何使用 OpenResty XRay 來分析 Java 應用的 CPU、off-CPU 和硬碟效能問題。在本文中,我們將重點介紹如何使用 OpenResty XRay 來分析 Tomcat Java 應用的請求延遲情況。

OpenResty XRay 對 Tomcat 的支援

OpenResty XRay 現在能夠捕獲和分析使用 Tomcat 的 Java 應用的請求。這項功能使我們能夠精確定位和抓取有問題的特定請求,不僅適用於直接使用 Tomcat 的應用,還包括內建了 Tomcat 的框架,如 Spring Boot。透過捕獲這些請求的詳細資訊和相應的 PCAP 包,OpenResty XRay 為深入分析 Java Web 應用效能提供了豐富的資料支援,成為解決複雜效能問題的理想工具。

為了實現這一功能,OpenResty XRay 採用了智慧抓包技術,讓效能分析變得更加高效和精準。

智慧抓包

OpenResty XRay 提供了智慧抓包功能,這是一個強大而獨特的特性,能夠大大提高效能分析的效率和精確度。以下是智慧抓包的主要優勢和特點:

  1. 選擇性捕獲:OpenResty XRay 可以只在我們感興趣的 TCP 連線上捕捉和分析網路資料包。透過只捕獲相關的網路流量,OpenResty XRay 有效地減少了分析過程中的噪音,使得問題定位更加準確和迅速。OpenResty XRay 提供了多種靈活的過濾條件,讓您能夠精確定位需要分析的請求。主要的過濾條件包括但不限於:

    • 主機名(Host)
    • 請求埠
    • URL 路徑
    • 請求響應時間閾值(毫秒)
    • 響應狀態碼 …
  2. 資源效率:選擇性捕獲大大降低了儲存和處理開銷,使得長時間的持續監控成為可能,即使在高流量的生產環境中也能輕鬆應用。

  3. 詳細的請求資訊:您可以獲取到每個請求的詳細資訊,包括但不限於:

    • 主機名(Host)
    • URL 路徑
    • URI 引數
    • 請求方法(GET, POST 等)
    • 請求協議(HTTP/1.1, HTTP/2 等)
    • 請求時間戳
    • 請求處理時間

    這些詳細資訊讓您能夠全面瞭解每個請求的特徵和效能表現。

  4. PCAP 包捕獲功能:除了基本的請求資訊,OpenResty XRay 還能為每個捕獲的請求生成對應的 PCAP(Packet Capture)檔案。這一功能讓您能夠進行更深入的網路層面分析,有助於排查複雜的效能問題和網路異常。

透過這些特性,OpenResty XRay 的智慧抓包功能為效能分析提供了強大的支援,使得問題定位和解決變得更加高效和精準。

實際應用示例

為了更好地展示 OpenResty XRay 在分析 Tomcat 應用請求延遲方面的能力,讓我們來看一個具體的示例,看看如何使用 OpenResty XRay 來分析請求延時的問題。

  1. 首先,我們啟動 OpenResty XRay 分析器,開啟捕獲 PCAP 包的選項。我們還可以設定一些過濾條件,方便我們篩選請求,比如這裡設定過濾條件為請求時間大於 250ms。

截圖 1

  1. 執行分析器後,我們很快就捕獲到了一些問題請求。在 OpenResty XRay 的介面上,我們可以清楚地看到這些請求的詳細資訊。

截圖 2

  1. 對於每個捕獲的請求,我們可以檢視以下關鍵資訊:
    • 請求的 URL 路徑
    • 使用的 HTTP 協議版本
    • 請求引數
    • 確切的請求處理時間

截圖 3

  1. OpenResty XRay 還提供了獲取每個請求對應 PCAP 包的功能。只需在請求資訊上右鍵點選,就可以下載該請求的 PCAP 檔案。

截圖 4

  1. 分析抓包結果

服務端延遲示例

在此圖中,橫軸表示資料包的序列號 (從 1 開始), 縱軸表示相鄰資料包之間的時間間隔 (單位:秒)。每個資料點都標有相應的 TCP 標誌 (如 SYN、ACK、PSH+ACK、FIN+ACK 等), 用於標識資料包型別。

在這個例子中,服務端 IP 為 192.168.0.11:8080, 客戶端 IP 為 192.168.0.16:35558。從圖表可以明顯看出,從服務端發往客戶端的 PSH+ACK 包出現了顯著延遲。這表明延遲很可能是由服務端引起的,比如服務端處理時間過長等問題。

透過這種方式分析網路抓包結果,我們可以快速定位延遲的來源,為進一步的效能最佳化提供明確方向。

結論

OpenResty XRay 為 Tomcat Java 應用提供了強大的請求延遲分析能力。透過靈活的過濾條件、詳細的請求資訊捕獲和 PCAP 包分析,它使得開發者和運維人員能夠快速定位和解決效能瓶頸。無論您是在開發環境還是生產環境中,OpenResty XRay 都是一個值得信賴的效能分析工具。

自動化取樣和專家分析

OpenResty XRay 不僅提供了強大的分析功能,還具備自動化的取樣和報告生成能力。為您的效能最佳化工作帶來更多便利:

  1. 自動線上按需取樣:XRay 能夠根據預設條件自動觸發取樣,無需人工干預。這意味著您可以在特定負載或效能指標達到某個閾值時自動開始採集資料,確保捕捉到最關鍵的效能問題。

  2. 自動生成分析報告:基於採集到的資料,XRay 能夠自動生成詳細的分析報告。這些報告包含了效能熱點、資源使用情況、潛在的最佳化建議等關鍵資訊,讓您能夠快速瞭解應用的效能狀況。

  3. 專家團隊支援:除了自動化功能,我們的專家團隊隨時準備為您提供更深入的支援:

    • 根據您的具體需求,我們可以為您定製新的分析器,以滿足特定的效能監控需求。
    • 我們的專家會協助您解讀自動生成的報告,提供專業的見解和最佳化建議。
    • 如遇到複雜的效能問題,我們的團隊可以提供更深入的分析和解決方案。

透過結合自動化工具和專家支援,OpenResty XRay 為您提供了一個全面的效能最佳化解決方案,幫助您的 Java 應用始終保持最佳效能狀態。

如果您想了解更多關於 OpenResty XRay 產品以及它如何幫助您最佳化 Java 應用效能的資訊,請訪問 我們的網站聯絡我們 以獲取更多詳情。

關於作者

章亦春是開源 OpenResty® 專案創始人兼 OpenResty Inc. 公司 CEO 和創始人。

章亦春(Github ID: agentzh),生於中國江蘇,現定居美國灣區。他是中國早期開源技術和文化的倡導者和領軍人物,曾供職於多家國際知名的高科技企業,如 Cloudflare、雅虎、阿里巴巴,是 “邊緣計算”、“動態追蹤” 和 “機器程式設計” 的先驅,擁有超過 22 年的程式設計及 16 年的開源經驗。作為擁有超過 4000 萬全球域名使用者的開源專案的領導者。他基於其 OpenResty® 開源專案打造的高科技企業 OpenResty Inc. 位於美國矽谷中心。其主打的兩個產品 OpenResty XRay(利用 動態追蹤 技術的非侵入式的故障剖析和排除工具)和 OpenResty Edge(最適合微服務和分散式流量的全能型閘道器軟體),廣受全球眾多上市及大型企業青睞。在 OpenResty 以外,章亦春為多個開源專案貢獻了累計超過百萬行程式碼,其中包括,Linux 核心、Nginx、LuaJITGDBSystemTapLLVM、Perl 等,並編寫過 60 多個開源軟體庫。

關注我們

如果您喜歡本文,歡迎關注我們 OpenResty Inc. 公司的 部落格網站 。也歡迎掃碼關注我們的微信公眾號:

我們的微信公眾號

翻譯

我們提供了 英文版 原文和中譯版(本文)。我們也歡迎讀者提供其他語言的翻譯版本,只要是全文翻譯不帶省略,我們都將會考慮採用,非常感謝!