成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

微服務下,接口性能優化的一些總結

新聞 前端
如果是自己寫的代碼,加上又熟悉業務場景,很容易就知道性能瓶頸點。但如果上來就去優化別人的代碼,甚至是其他產品線的代碼,還是有一些挑戰的。

如果是自己寫的代碼,加上又熟悉業務場景,很容易就知道性能瓶頸點。但如果上來就去優化別人的代碼,甚至是其他產品線的代碼,還是有一些挑戰的。最近就在做這事,接手了優化公司一個業務引擎接口的任務,在這兒對優化方法做一些總結。

優化接口總共分兩步,一是找到性能熱點,二是解決熱點。在不熟悉代碼的情況下,找熱點是最難的,找到后對癥下藥就容易多了。先主要說一下如何找性能熱點。

[[383412]]

一、查調用鏈

微服務下,調用鏈追蹤能很容易的定位到是鏈路上的哪個環節出現問題。從而確定是別人接口把你的拖慢了,還是自己接口內代碼有問題;且調用鏈反映的是線上真實數據,比跑線下測試數據更有說服力。

這里以A->B->C舉例,簡單說一下調用鏈常用的幾個參數:

  • TraceID :一個完整鏈路的唯一ID。本例中,TraceID是在A、B、C中傳遞的,ABC中記錄的鏈路日志都用這個唯一的TraceID,不會變。
  • BindingID :一個線程內的ID。本例中,A記錄的鏈路日志中,有唯一的BindingIDA,同樣B、C中各有BindingIDB、BindingIDC
  • ConversationID :一個會話的ID。本例中,A調用B,A生成一個ConversationID,傳給B,B在返回結果前,記下日志,A在收到結果后記下日志。這兩條日志有唯一的ConversationID。
  • VirtualPath :用于標識微服務路徑
  • Component :用于標識組件,或者微服務名稱
  • CostInMilsecond :記錄一次會話耗時。Client端發起前開始計時,收到后記入日志、Server端返回前記入日志。

明白這幾個參數后,再看看具體使用。我們公司是用Kibana作為查詢統計工具的。那么,我的分析步驟有如下幾步:

1. 確定該請求的最長耗時(用于重點優化)、耗時中位數(用于全面優化):

需要用到Kibana的Visualize功能,指定一個Metric為中位數、一個Metric為Max,再按照服務路徑聚合即可

2. 拿到指定耗時時間附近的多個請求的BindingID

3. 統計其子鏈路耗時:

用Visualize可以統計出平均每個線程中,每個子鏈路的被調用次數、總耗時。然后看看在主鏈路耗時的占比情況。如果占比比較大,說明鏈路有問題了。比如我最近優化的幾個接口,在鏈路上能看到數據庫存儲過程執行次數多且慢,那么肯定可以定位是數據訪問的問題。

如果占比不多,那就要繼續分析方法內部了。

二、本地分析

1. 使用Dottrace

方法內部的分析,最主要的是采用合理的參數來驅動被測方法。這里我會選最耗時的參數來覆蓋被測方法的大多數分支,并且充分暴露問題。

還要注意一點的是,在正式采樣前,先對程序預熱一下,也就是跑一次被測方法,讓該緩存的緩存下來。這樣更能反映線上一般情況。

2. 結果解讀

dottrace可以說是異常的強大了。給你列出了某個方法的被調用次數、耗時、Collection操作耗時、系統函數耗時、用戶函數耗時。基本上看這個圖就知道熱點在什么地方了。

三、優化方法總結

熱點找到了,后面就是對癥下藥的優化了。總結一下優化方法也就是:

1. 循環體內的IO、遠程調用,改為循環外去重后批量執行,避免重復發起調用

2. 數據庫慢查詢,優化SQL、索引

3. 基礎的、頻繁查詢的方法,可以把執行結果放到緩存

4. 串行的遠程調用可以改為并行。(慎用,請求高峰期會造成內存暴漲,同時也可能導致上下文丟失)

5. 非主流程的方法,比如發消息通知、增刪會員積分,改為發消息到隊列然后異步消費。 

 

責任編輯:張燕妮 來源: Linyb極客之路
相關推薦

2009-07-01 16:20:34

Flex垃圾回收性能優化

2009-11-26 10:32:57

PHP代碼優化

2018-06-14 09:35:35

2021-06-10 10:02:19

優化緩存性能

2019-09-17 09:21:01

2022-05-23 13:44:53

前端開發優化

2010-05-12 17:45:01

IIS 服務器

2020-06-05 08:53:31

接口性能實踐

2009-09-27 11:09:42

API設計

2015-12-08 09:05:41

Java內部類

2009-06-22 15:36:00

如何學好java

2011-07-12 09:47:53

WebService

2011-11-28 15:57:26

MySQL數據庫主從配置

2011-05-23 18:06:24

站內優化SEO

2009-07-15 16:16:22

JDBC下載

2021-05-21 11:20:36

Linux命令文件

2011-07-22 09:58:18

Oracle數據庫優化策略

2020-04-10 08:50:37

Shell腳本循環

2020-05-19 14:35:42

Shell腳本循環

2012-07-03 13:55:00

ASP.NET
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美久久电影 | 久久久久免费精品国产小说色大师 | 亚洲精品观看 | 亚洲福利在线视频 | 殴美成人在线视频 | 日日操视频| 国产精品久久久久久久久久久久 | 国产美女自拍视频 | 毛片入口 | 午夜av一区二区 | 亚洲乱码一区二区三区在线观看 | 欧美一级大片免费观看 | 亚洲精品99| 一区视频在线免费观看 | 日韩色综合 | 亚洲五码久久 | 中文日韩在线 | 亚洲成人免费在线观看 | 欧美精品v国产精品v日韩精品 | 日韩精品一区二区三区中文字幕 | 国产成人免费视频网站视频社区 | 日本不卡一区二区三区在线观看 | 久草在线在线精品观看 | 99re在线视频 | 黑人精品 | 欧美一级久久 | 337p日本欧洲亚洲大胆 | 黄色网址在线播放 | 精品成人佐山爱一区二区 | 欧美一级视频在线观看 | 国产伦一区二区三区四区 | 一级做a爰片久久毛片 | 亚州综合一区 | 欧美一区二区在线免费观看 | 久久国产精品网站 | 天天躁日日躁狠狠躁白人 | 国产成人亚洲精品 | 亚洲精品永久免费 | 中文字幕成人 | 人人爱干| 大学生a级毛片免费视频 |