實用技巧:快速定位Zuul的效能瓶頸
Zuul的效能不是特別好,特別是,某些專案對Zuul進行了一些擴充套件,程式碼還不那麼考究時。
如何快速定位出Zuul的效能瓶頸呢?我們知道,Zuul的核心是過濾器,Zuul大多功能都是基於過濾器實現的。
一次請求,會經過若干過濾器,如何檢視每個過濾器執行的耗時呢?只需開啟Zuul的Debug能力即可。
注
本文基於Spring Cloud Finchley,同樣適用於Spring Cloud Greenwich。
Edgware及更早版本,需配置
management.security.enabled = false
,並本文的/actuator/httptrace
改為/trace
。
TIPS
如果您對Zuul的過濾器不太瞭解,可先閱讀如下兩篇文章:
開啟Debug引數
zuul:
include-debug-header: true
management:
endpoints:
web:
exposure:
include: '*'
這樣,只需在訪問Zuul時,新增 ?debug=true
即可對Zuul進行Debug。例如監控路徑ZUUL_HOST:ZUUL_PORT/SOME_PATH
經過了哪些過濾器,效能瓶頸出現在哪個過濾器,只需構造 ZUUL_HOST:ZUUL_PORT/SOME_PATH?debug=true
即可。
請求後,訪問 ZUUL_HOST:ZUUL_PORT/actuator/httptrace
,即可看到類似如下的結果:
"X-Zuul-Debug-Header": ["[[[Filter pre 5 PreDecorationFilter]]][[[Filter {PreDecorationFilter TYPE:pre ORDER:5} Execution time = 1ms]]][[[{PreDecorationFilter} added retryable=false]]][[[{PreDecorationFilter} added ignoredHeaders=[authorization, set-cookie, cookie]]]][[[{PreDecorationFilter} added originResponseHeaders=[com.netflix.util.Pair@d68cf7e9]]]][[[{PreDecorationFilter} added zuulRequestHeaders={x-forwarded-host=localhost:8040, x-forwarded-proto=http, x-forwarded-prefix=/microservice-provider-user, x-forwarded-port=8040, x-forwarded-for=0:0:0:0:0:0:0:1}]]][[[{PreDecorationFilter} added requestURI=/users/1]]][[[{PreDecorationFilter} added proxy=microservice-provider-user]]][[[{PreDecorationFilter} changed executedFilters=ServletDetectionFilter[SUCCESS][0ms], Servlet30WrapperFilter[SUCCESS][0ms], DebugFilter[SUCCESS][0ms], PreDecorationFilter[SUCCESS][1ms]]]][[[{PreDecorationFilter} added serviceId=microservice-provider-user]]][[[Invoking {route} type filters]]][[[Filter route 10 RibbonRoutingFilter]]][[[Filter {RibbonRoutingFilter TYPE:route ORDER:10} Execution time = 9ms]]][[[{RibbonRoutingFilter} changed originResponseHeaders=[com.netflix.util.Pair@d68cf7e9, com.netflix.util.Pair@694b84a6, com.netflix.util.Pair@a4baea16, com.netflix.util.Pair@99438774]]]][[[{RibbonRoutingFilter} added responseDataStream=org.apache.http.conn.EofSensorInputStream@1145027a]]][[[{RibbonRoutingFilter} added zuulResponseHeaders=[com.netflix.util.Pair@694b84a6, com.netflix.util.Pair@99438774]]]][[[{RibbonRoutingFilter} added responseStatusCode=200]]][[[{RibbonRoutingFilter} added responseGZipped=false]]][[[{RibbonRoutingFilter} added ribbonResponse=org.springframework.cloud.netflix.ribbon.apache.RibbonApacheHttpResponse@5e2ce130]]][[[{RibbonRoutingFilter} changed executedFilters=ServletDetectionFilter[SUCCESS][0ms], Servlet30WrapperFilter[SUCCESS][0ms], DebugFilter[SUCCESS][0ms], PreDecorationFilter[SUCCESS][1ms], RibbonRoutingFilter[SUCCESS][9ms]]]][[[{RibbonRoutingFilter} added zuulResponse=org.springframework.cloud.netflix.ribbon.RibbonHttpResponse@1e0eabde]]][[[Filter route 100 SimpleHostRoutingFilter]]][[[Filter route 500 SendForwardFilter]]][[[Invoking {post} type filters]]][[[Filter post 1000 SendResponseFilter]]]"],
由結果可知,該端點依次列印了請求經過了哪些過濾器、每個過濾器的耗時。簡單分析一下,就能瞭解Zuul的效能瓶頸了。
開啟預設Debug
經過上面的配置,已實現對Zuul的Debug,但每次都要新增一個debug=true
的小尾巴,也是挺煩的,如果不想新增,而想讓Zuul預設就對請求開啟Debug,該怎麼辦呢?
也非常簡答,只需在上文的基礎上,新增如下配置即可:
zuul:
debug:
request: true
這樣,即使不新增debug=true
,Zuul也會Debug。
相關原始碼
相關原始碼其實比較簡單,就一個類: org.springframework.cloud.netflix.zuul.filters.pre.DebugFilter
,有興趣的童鞋可以瞭解一下。
本文首發
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/818/viewspace-2822379/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle快速定位資料庫瓶頸Oracle資料庫
- 效能課堂-TPS 瓶頸精準定位
- Linux 磁陣效能瓶頸定位過程Linux
- 用 pprof 找出程式碼效能瓶頸
- 效能測試如何定位瓶頸?偶發超時?看高手如何快速排查問題
- 宜信資料庫實踐|解讀Oracle AWR效能分析報告,更快定位效能瓶頸資料庫Oracle
- 漫談前端效能 突破 React 應用瓶頸前端React
- 突破效能瓶頸,實現流程自動化
- oracle資料庫巡檢優化-快速定位資料庫瓶頸Oracle資料庫優化
- 利用PerfDog分析遊戲效能瓶頸遊戲
- oracle資料庫巡檢優化-快速定位資料庫瓶頸(轉)Oracle資料庫優化
- oracle資料庫巡檢最佳化-快速定位資料庫瓶頸Oracle資料庫
- Chrome執行時效能瓶頸分析Chrome
- wait event監測效能瓶頸AI
- 如何正確定義效能瓶頸
- 記-Nodejs埋點服務-定位cpu瓶頸NodeJS
- TextView效能瓶頸,渲染優化,以及StaticLayout的一些用處TextView優化
- 化解應用系統瓶頸
- 影響你網站效能的 5 個瓶頸網站
- 分享發現的一個效能瓶頸問題
- PHP的curl造成效能瓶頸,如何優化?PHP優化
- 前端如何快速進階,突破技術瓶頸?前端
- 顯示卡瓶頸是什麼,如何識別顯示卡GPU瓶頸並解決以提升PC效能GPU
- 效能測試-服務端瓶頸分析思路服務端
- LightDB資料庫效能瓶頸分析(一)資料庫
- MySQL 效能優化之硬體瓶頸分析MySql優化
- 資料庫效能監控瓶頸理論資料庫
- 五個容易錯過的 PostgreSQL 查詢效能瓶頸SQL
- 伺服器IO瓶頸對MySQL效能的影響伺服器MySql
- 使用vmstat標識linux系統的效能瓶頸Linux
- oracle資料庫巡檢最佳化-使用sql語句快速定位資料庫瓶頸Oracle資料庫SQL
- 應用系統瓶頸排查和分析的思考-Arthas 實戰
- 利用Windows效能計數器分析軟體產品的效能瓶頸Windows
- SQL Server 資料庫 最佳化 效能瓶頸SQLServer資料庫
- JVM 效能調優實戰之:一次系統效能瓶頸的尋找過程JVM
- 用資料說話,億級海量資料分析效能瓶頸如何破?
- cpu瓶頸 top的核心sy佔用較高
- 實時監控網路流量,精準辨別網路效能瓶頸