精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

對 Pulsar 集群的壓測與優化

開發 前端
一鍵創建集群和執行測試用例比較簡單,利用了 helm 和 k8s client 的 SDK 把整個流程串起來即可。

前言

這段時間在做 MQ(Pulsar)相關的治理工作,其中一個部分內容關于消息隊列的升級,比如:

  • 一鍵創建一個測試集群。
  • 運行一批測試用例,覆蓋我們線上使用到的功能,并輸出測試報告。
  • 模擬壓測,輸出測試結果。

本質目的就是想直到新版本升級過程中和升級后對現有業務是否存在影響。

一鍵創建集群和執行測試用例比較簡單,利用了 helm 和 k8s client 的 SDK 把整個流程串起來即可。

壓測

其實稍微麻煩一點的是壓測,Pulsar 官方本身是有提供一個壓測工具;只是功能相對比較單一,只能對某批 topic 極限壓測,最后輸出測試報告。最后參考了官方的壓測流程,加入了一些實時監控數據,方便分析整個壓測過程中性能的變化。

客戶端 timeout

隨著壓測過程中的壓力增大,比如壓測時間和線程數的提高,客戶端會拋出發送消息 timeout 異常。

org.apache.pulsar.client.api.PulsarClientException$TimeoutException: 
The producer pulsar-test-212-20 can not send message to the topic persistent://my-tenant/my-ns/perf-topic-0 within given timeout : createdAt 82.964 seconds ago, firstSentAt 8.348 seconds ago, lastSentAt 8.348 seconds ago, retryCount 1

而這個異常在生產業務環境的高峰期偶爾也出現過,這會導致業務數據的丟失;所以正好這次被我復現出來后想著分析下產生的原因以及解決辦法。

源碼分析客戶端

既然是客戶端拋出的異常所以就先看從異常點開始看起,其實整個過程和產生的原因并不復雜,如下圖:

圖片

客戶端流程:

  1. 客戶端 producer 發送消息時先將消息發往本地的一個 pending 隊列。
  2. 待 broker 處理完(寫入 bookkeeper) 返回 ACK 時刪除該 pending 隊列頭的消息。
  3. 后臺啟動一個定時任務,定期掃描隊列頭(頭部的消息是最后寫入的)的消息是否已經過期(過期時間可配置,默認30s)。
  4. 如果已經過期(頭部消息過期,說明所有消息都已過期)則遍歷隊列內的消息依次拋出PulsarClientException$TimeoutException 異常,最后清空該隊列。

服務端 broker 流程:

  1. 收到消息后調用 bookkeeper API 寫入消息。
  2. 寫入消息時同時寫入回調函數。
  3. 寫入成功后執行回調函數,這時會記錄一條消息的寫入延遲,并通知客戶端 ACK。
  4. 通過 broker metric 指標pulsar_broker_publish_latency 可以獲取寫入延遲。

從以上流程可以看出,如果客戶端不做兜底措施則在第四步會出現消息丟失,這類本質上不算是 broker 丟消息,而是客戶端認為當時 broker 的處理能力達到上限,考慮到消息的實時性從而丟棄了還未發送的消息。

性能分析

通過上述分析,特別是 broker 的寫入流程得知,整個寫入的主要操作便是寫入 bookkeeper,所以 bookkeeper 的寫入性能便關系到整個集群的寫入性能。

極端情況下,假設不考慮網絡的損耗,如果 bookkeeper 的寫入延遲是 0ms,那整個集群的寫入性能幾乎就是無上限;所以我們重點看看在壓測過程中 bookkeeper 的各項指標。

CPU

首先是 CPU:

圖片

從圖中可以看到壓測過程中 CPU 是有明顯增高的,所以我們需要找到壓測過程中 bookkeeper 的 CPU 大部分損耗在哪里?

這里不得不吹一波阿里的 arthas 工具,可以非常方便的幫我們生成火焰圖。

圖片

分析火焰圖最簡單的一個方法便是查看頂部最寬的函數是哪個,它大概率就是性能的瓶頸。

在這個圖中的頂部并沒有明顯很寬的函數,大家都差不多,所以并沒有明顯損耗 CPU 的函數。

此時在借助云廠商的監控得知并沒有得到 CPU 的上限(limit 限制為 8核)。

圖片



使用 arthas 過程中也有個小坑,在 k8s 環境中有可能應用啟動后沒有成功在磁盤寫入 pid ,導致查詢不到 Java 進程。

$ java -jar arthas-boot.jar
[INFO] arthas-boot version: 3.6.7
[INFO] Can not find java process. Try to pass <pid> in command line.
Please select an available pid.

此時可以直接 ps 拿到進程 ID,然后在啟動的時候直接傳入 pid 即可。

$ java -jar arthas-boot.jar 1

通常情況下這個 pid 是 1。

磁盤

既然 CPU 沒有問題,那就再看看磁盤是不是瓶頸。

圖片

可以看到壓測時的 IO 等待時間明顯是比日常請求高許多,為了最終確認是否是磁盤的問題,再將磁盤類型換為 SSD 進行測試。

圖片

果然即便是壓測,SSD磁盤的 IO 也比普通硬盤的正常請求期間延遲更低。

既然磁盤 IO 延遲降低了,根據前文的分析理論上整個集群的性能應該會有明顯的上升,因此對比了升級前后的消息 TPS 寫入指標:

圖片


升級后每秒的寫入速率由 40k 漲到 80k 左右,幾乎是翻了一倍(果然用錢是最快解決問題的方式);

但即便是這樣,極限壓測后依然會出現客戶端 timeout,這是因為無論怎么提高服務端的處理性能,依然沒法做到沒有延遲的寫入,各個環節都會有損耗。

升級過程中的 timeout

還有一個關鍵的步驟必須要覆蓋:模擬生產現場有著大量的生產者和消費者接入收發消息時進行集群升級,對客戶端業務的影響。

根據官方推薦的升級步驟,流程如下:

  • Upgrade Zookeeper.
  • Disable autorecovery.
  • Upgrade Bookkeeper.
  • Upgrade Broker.
  • Upgrade Proxy.
  • Enable autorecovery.

其中最關鍵的是升級 Broker 和 Proxy,因為這兩個是客戶端直接交互的組件。

本質上升級的過程就是優雅停機,然后使用新版本的 docker 啟動;所以客戶端一定會感知到 Broker 下線后進行重連,如果能快速自動重連那對客戶端幾乎沒有影響。

圖片

在我的測試過程中,2000左右的 producer 以 1k 的發送速率進行消息發送,在 30min 內完成所有組件升級,整個過程客戶端會自動快速重連,并不會出現異常以及消息丟失。

而一旦發送頻率增加時,在重啟 Broker 的過程中便會出現上文提到的 timeout 異常;初步看起來是在默認的 30s 時間內沒有重連成功,導致積壓的消息已經超時。

經過分析源碼發現關鍵的步驟如下:

圖片


客戶端在與 Broker 的長連接狀態斷開后會自動重連,而重連到具體哪臺 Broker 節點是由 LookUpService 處理的,它會根據使用的 topic 獲取到它的元數據。

理論上這個過程如果足夠快,對客戶端就會越無感。

在元數據中包含有該 topic 所屬的 bundle 所綁定的  Broker 的具體 IP+端口,這樣才能重新連接然后發送消息。

bundle 是一批 topic 的抽象,用來將一批 topic 與 Broker 綁定。

而在一個 Broker 停機的時會自動卸載它所有的 bundle,并由負載均衡器自動劃分到在線的 Broker 中,交由他們處理。

這里會有兩種情況降低 LookUpSerive 獲取元數據的速度:

因為所有的 Broker 都是 stateful 有狀態節點,所以升級時是從新的節點開始升級,假設是broker-5,假設升級的那個節點的 bundle 切好被轉移 broker-4中,客戶端此時便會自動重連到 4 這個Broker 中。

此時客戶端正在講堆積的消息進行重發,而下一個升級的節點正好是 4,那客戶端又得等待 bundle 成功 unload 到新的節點,如果恰好是 3 的話那又得套娃了,這樣整個消息的重發流程就會被拉長,直到超過等待時間便會超時。

還有一種情況是 bundle 的數量比較多,導致上面講到的 unload 時更新元數據到 zookeeper 的時間也會增加。

所以我在考慮 Broker 在升級過程中時,是否可以將 unload 的 bundle 優先與 Broker-0進行綁定,最后全部升級成功后再做一次負載均衡,盡量減少客戶端重連的機會。

解決方案

如果我們想要解決這個 timeout 的異常,也有以下幾個方案:

  1. 將 bookkeeper 的磁盤換為寫入時延更低的 SSD,提高單節點性能。
  2. 增加 bookkeeper 節點,不過由于 bookkeeper 是有狀態的,水平擴容起來比較麻煩,而且一旦擴容再想縮容也比較困難。
  3. 增加客戶端寫入的超時時間,這個可以配置。
  4. 客戶端做好兜底措施,捕獲異常、記錄日志、或者入庫都可以,后續進行消息重發。
  5. 為 bookkeeper 的寫入延遲增加報警。
  6. Spring 官方剛出爐的 Pulsar-starter 已經內置了 producer 相關的 metrics,客戶端也可以對這個進行監控報警。

以上最好實現的就是第四步了,效果好成本低,推薦還沒有實現的都盡快 try catch 起來。

整個測試流程耗費了我一兩周的時間,也是第一次全方位的對一款中間件進行測試,其中也學到了不少東西;不管是源碼還是架構都對 Pulsar 有了更深入的理解。

責任編輯:姜華 來源: crossoverJie
相關推薦

2020-06-17 08:55:22

mysqlslapsysbenchMySQL

2022-11-25 18:49:11

云原生

2025-07-31 01:47:00

2014-11-25 11:37:17

壓測 軟件測試

2019-08-19 00:14:12

網絡測試帶寬網絡流量

2022-06-27 11:06:33

全鏈路影子庫影子表

2010-07-14 10:53:20

Web應用

2023-10-19 08:23:50

wrkOpenResty工具

2010-05-24 14:59:29

Hadoop集群

2016-08-08 18:11:50

服務器壓力測試

2018-01-10 14:08:34

阿里雙11壓測

2021-03-05 13:30:51

MySQL數據庫壓測工具

2020-12-03 09:57:34

MySQL壓測工具數據庫

2021-02-03 14:51:34

MySQL數據庫壓測工具

2023-02-22 08:15:13

壓測模擬計算

2022-01-17 09:18:28

JMeter分布式壓測

2021-11-29 11:20:27

塊存儲EBS Lens

2022-06-07 15:33:51

Android優化實踐

2024-03-21 10:39:24

CIOAI

2021-12-03 08:45:57

RocketMQ壓測性能
點贊
收藏

51CTO技術棧公眾號

欧美爱爱视频网站| 国产欧亚日韩视频| 男生裸体视频网站| 四虎4545www国产精品| 国产精品视频麻豆| 国产精品一区在线播放| 精品国产一区二区三区四| 欧美va久久久噜噜噜久久| 精品久久久久久久久久久久久久久| 日本免费不卡一区二区| 麻豆传媒视频在线| 99视频精品在线| 91天堂在线观看| 天堂中文字幕在线观看| 欧美激情成人在线| 亚洲天堂av在线免费观看| 手机在线免费毛片| 亚洲一区二区三区四区| 亚洲高清久久久| 亚洲人成影视在线观看| 天堂在线一二区| 激情成人综合网| 日韩av电影手机在线| 欧美人与禽zozzo禽性配| 精品国产一区二区三区噜噜噜| 日韩欧美久久久| 日本高清久久久| 欧美7777| 欧美午夜影院在线视频| 妞干网视频在线观看| 日本美女在线中文版| 99精品视频免费在线观看| 亚洲aa在线观看| 中文字幕网址在线| 日本欧美在线观看| 国产91久久婷婷一区二区| 日韩av在线电影| 午夜国产精品视频免费体验区| 色噜噜狠狠色综合网图区| 中文字幕在线观看的网站| 国产三级精品三级在线观看国产| 欧美精品精品一区| 伊人影院综合在线| 国产电影一区二区三区爱妃记| 狠狠综合久久av一区二区小说| 999久久欧美人妻一区二区| 黄色免费在线看| 国产精品免费视频观看| 亚洲一区二区精品在线| www视频在线观看免费| 中文字幕成人网| 日韩区国产区| wwwxxx在线观看| 国产精品福利电影一区二区三区四区| 日本一区精品| 超碰国产在线| 中文字幕一区二区三区四区| 一区二区三区四区欧美日韩| 三区四区电影在线观看| 亚洲欧洲精品成人久久奇米网| 亚洲成人网上| 素人av在线| 国产精品不卡在线| 8x8x华人在线| 久久亚洲资源| 亚洲va韩国va欧美va精品| 国产91美女视频| 丁香六月综合| 欧美日韩精品专区| 日韩av自拍偷拍| 久久视频免费| 亚洲国产精品热久久| 美国黄色a级片| 成人区精品一区二区婷婷| 日韩在线观看成人| 91精品国产高清一区二区三蜜臀| 激情亚洲成人| 欧美中文在线免费| 中文字幕乱码在线观看| 国产剧情一区二区| 九九九九精品九九九九| 成人精品一区二区三区校园激情| 国产精品福利一区| www.av片| 国产精品黄色片| 精品欧美一区二区久久| 成人午夜福利一区二区| 99久久激情| 欧美激情精品久久久久久蜜臀| 黄色片免费观看视频| 日本vs亚洲vs韩国一区三区二区| 国产精品久久久久久久久久ktv | 91久久中文字幕| 亚洲欧美激情另类| 久久免费看少妇高潮| 最新不卡av| 综合毛片免费视频| 7777精品伊人久久久大香线蕉完整版| 亚洲天堂2024| 欧美黄色大片在线观看| 78色国产精品| 国产片高清在线观看| 久久综合色一综合色88| 喜爱夜蒲2在线| 3d欧美精品动漫xxxx无尽| 日韩欧美国产麻豆| 丁香花五月婷婷| 亚洲人体大胆视频| 91久热免费在线视频| 色猫av在线| 亚洲一区二区三区自拍| 欧美午夜aaaaaa免费视频| 我要色综合中文字幕| 国产一区二区三区在线免费观看| 妺妺窝人体色www聚色窝仙踪| 日韩av一区二区三区| 亚洲综合精品伊人久久| 自拍视频在线免费观看| 懂色av影视一区二区三区| 日韩av影视大全| 日本女优一区| 97精品久久久中文字幕免费| a毛片在线免费观看| 中文字幕的久久| 欧美精品成人网| 日韩电影在线观看完整免费观看| 色综合久久久久久中文网| 自拍偷拍色综合| 国产午夜精品久久| 日韩av片在线看| 美女视频亚洲色图| 欧美激情第6页| 国产a级免费视频| 国产精品的网站| 中文字幕 91| blacked蜜桃精品一区| 日本欧美一二三区| 四虎国产精品永远| 欧美日韩中文字幕综合视频| 亚洲麻豆一区二区三区| 欧美私人啪啪vps| 99re国产| 白白色在线观看| 精品国产第一区二区三区观看体验| 午夜精品福利在线视频| 精品在线观看免费| 不卡中文字幕在线| 性欧美video另类hd尤物| 最近2019中文字幕mv免费看 | 久久高清国产| 欧美久久综合性欧美| 竹内纱里奈兽皇系列在线观看| 日韩成人黄色av| 免费视频久久久| 国产日本欧洲亚洲| www.精品在线| 亚洲91精品| 豆国产97在线| 天堂电影一区| 国产亚洲精品久久久| 中文字幕在线观看欧美| 亚洲日本一区二区| 18深夜在线观看免费视频| 狠狠干成人综合网| 韩国成人动漫在线观看| 三上悠亚亚洲一区| 日韩在线欧美在线国产在线| 99久久久国产精品无码网爆| 亚洲综合清纯丝袜自拍| 人妻丰满熟妇av无码久久洗澡| 日本视频免费一区| 日韩不卡视频一区二区| 成人精品动漫一区二区三区| 欧日韩在线观看| h视频网站在线观看| 欧美一个色资源| 天天操天天爽天天干| 国产女人18毛片水真多成人如厕 | 黄色片中文字幕| 国产精品久久99| 黄色性视频网站| 日产国产高清一区二区三区| 日本一区二区三区四区五区六区| a级日韩大片| 国产精品第一视频| 四虎影视成人| 亚洲桃花岛网站| 亚洲国产精品久久久久爰性色| 欧美色欧美亚洲高清在线视频| 夫妇露脸对白88av| 成人av免费在线播放| 欧美成人黄色网址| 亚洲大胆av| 亚洲综合五月天| 亲子伦视频一区二区三区| 国产精品午夜一区二区欲梦| free性护士videos欧美| 自拍偷拍亚洲在线| 无码国精品一区二区免费蜜桃| 欧美三级电影网| 国产精品黄色大片| 亚洲另类在线一区| 免费黄在线观看| 99国产精品视频免费观看| 手机免费看av网站| 久久久久中文| 美脚丝袜脚交一区二区| 99久久九九| 日产精品一线二线三线芒果| 豆花视频一区二区| 91久久国产精品91久久性色| 成人免费影院| 午夜精品久久久久久久久久久久久| 在线免费黄色| 亚洲性视频网址| 香港一级纯黄大片| 精品黑人一区二区三区久久| 亚洲天堂中文在线| 日本韩国一区二区三区视频| 国产无码精品在线观看| 亚洲激情校园春色| 国产麻豆a毛片| 国产欧美日韩另类视频免费观看 | 91福利在线观看视频| 色先锋资源久久综合| 四虎成人精品永久免费av| 亚洲手机成人高清视频| 9.1片黄在线观看| 国产偷国产偷亚洲高清人白洁 | 在线观看免费黄网站| 另类亚洲自拍| 日韩精品一区二区三区久久| 亚洲高清二区| 人妻少妇精品久久| 在线高清一区| 精品人妻少妇一区二区| 亚洲国内欧美| 国产日韩av网站| 亚洲乱亚洲高清| 国产va亚洲va在线va| 国内精品久久久久国产盗摄免费观看完整版| 久久免费看毛片| 国产精品99视频| 艳母动漫在线观看| 女人天堂亚洲aⅴ在线观看| 日本黄色a视频| 亚洲国产精品日韩专区av有中文| 尤物一区二区三区| 欧美疯狂party性派对| 亚洲美女网站18| 999久久久91| 妞干网这里只有精品| 你懂的国产精品永久在线| 国产在线视频综合| 亚洲精品精选| 青青在线视频观看| 免费在线一区观看| 天堂av手机在线| 国产v日产∨综合v精品视频| 成人在线观看一区二区| gogogo免费视频观看亚洲一| 偷拍女澡堂一区二区三区| 国产日韩欧美一区二区三区乱码| 人人妻人人澡人人爽| 国产精品国产自产拍高清av | 蜜臀aⅴ国产精品久久久国产老师| 粉嫩一区二区三区性色av| chinese麻豆新拍video| 久久综合久色欧美综合狠狠| 国产精品久久久视频| 中文字幕一区视频| 国产在线欧美在线| 色婷婷亚洲婷婷| 国产精品特级毛片一区二区三区| 精品免费国产一区二区三区四区| 午夜影院在线视频| 色小说视频一区| 欧美xxxx免费虐| 国产99久久久欧美黑人| 日韩国产一二三区| 国产精品视频免费一区| 欧美人与拘性视交免费看| 伊人情人网综合| 亚洲九九精品| 性猛交ⅹ×××乱大交| 成人激情文学综合网| 性猛交娇小69hd| 亚洲激情图片一区| 波多野结衣啪啪| 日韩欧美在线不卡| 九九九伊在人线综合| 久久综合久久88| 在线观看的黄色| 亚洲一区二区三区乱码aⅴ| 奇米影视777在线欧美电影观看 | 欧美性三三影院| 免费a视频在线观看| 自拍视频国产精品| av男人的天堂在线观看| 国产精品你懂得| 99精品中文字幕在线不卡| 蜜桃av噜噜一区二区三| 欧美在线亚洲综合一区| 免费看污污网站| 久久综合九色综合欧美就去吻 | 北条麻妃国产九九九精品小说| 成人毛片100部免费看| 日韩专区一卡二卡| 精品熟女一区二区三区| 国产精品成人免费精品自在线观看| 偷偷操不一样的久久| 欧美一区二区黄色| 国产区高清在线| 欧美在线观看网站| 97久久综合精品久久久综合| av动漫免费观看| 视频一区二区三区中文字幕| av无码一区二区三区| 亚洲精品视频免费看| 中文字幕+乱码+中文| 亚洲精品网站在线播放gif| 91吃瓜在线观看| aa成人免费视频| 国产精品mv在线观看| 不卡中文字幕在线观看| 国产欧美一区视频| 99精品在线播放| 日韩精品在线观看视频| mm视频在线视频| 国内成+人亚洲| 国模吧视频一区| 欧美丰满熟妇bbb久久久| 亚洲精品国产品国语在线app| 91资源在线视频| xxx欧美精品| 亚洲精品一区av| 一区二区三区视频| 精品一区二区三区在线视频| 国产三级在线观看完整版| 欧美日韩综合一区| 日本中文在线观看| 国产日韩欧美电影在线观看| 全球成人免费直播| а 天堂 在线| 亚洲精品国产视频| 亚洲免费国产视频| 性视频1819p久久| 亚洲免费成人av在线| 日韩毛片在线免费看| 久久久精品中文字幕麻豆发布| 波多野结衣电车| 色系列之999| 欧美欧美在线| 日韩av中文字幕第一页| 99精品桃花视频在线观看| 波多野结衣视频网站| 亚洲男人av电影| www.精品国产| 日韩最新中文字幕| 国产成人免费视| 国产精品999在线观看| 亚洲女人天堂视频| 成人国产网站| 日本a在线天堂| 9i在线看片成人免费| 精品人妻无码一区二区性色| 在线色欧美三级视频| 高清不卡一区| 国产69精品久久久久久久| 久久综合九色综合久久久精品综合| 中文天堂在线资源| 久久艳片www.17c.com | 岛国精品一区二区| 中文字幕在线观看视频网站| 中文字幕日本欧美| 欧美a级大片在线| 少妇性饥渴无码a区免费| 日本一区二区三区四区在线视频| 国产suv精品一区二区69| 668精品在线视频| 成人综合专区| 成年人小视频在线观看| 一本大道久久a久久综合婷婷| 国产鲁鲁视频在线观看特色| 国产欧美一区二区在线播放| 视频一区二区三区在线| 91人妻一区二区三区蜜臀| 亚洲成人在线网| 免费视频成人| 无码人妻精品一区二区三区在线| 中文字幕一区二区三区四区不卡| 黄频在线免费观看| 国产精品一区二区三区毛片淫片| 亚洲网址在线| 国产又粗又猛又爽又黄的视频四季| 精品国产一区二区三区久久影院| 国产精品久久久久久久久久齐齐| 99久久国产综合精品五月天喷水| 中文字幕av资源一区| 天天躁日日躁狠狠躁喷水|