目錄
一、需求描述
二、問題分析
1.tcpdump網路情況
2.檢視消費執行緒堆疊
3.消費**定位
三、後記
一、需求描述
在容器推廣中,為了測試容器的效能,需要訊息sdk與ecs上在傳送和消費的效能對比;在對比消費效能時,發現容器中的消費效能居然是ecs的2倍。容器併發消費的20個執行緒tps在3萬左右,ecs中20個消費執行緒tps在1.5萬左右。
問題:配置均採用8c16g,容器中的效能幾乎是ecs的兩倍,這不科學,事出反常必有妖。
二、問題分析
1.tcpdump網路情況
tcpdump顯示在消費的機器存在頻繁的網域名稱解析過程;10.x.x.185向dns伺服器100.x.x.136.domain和10.x.x.138.domain請求解析。而10.x.x.185這台機器又是訊息傳送者的機器ip,測試的傳送和消費分別部署在兩台機器上。
問題:消費時為何會有訊息傳送方的ip呢?而且該ip還不斷進行網域名稱解析。
2.檢視消費執行緒堆疊
3.消費**定位
在消費時有通過messageext.bornhost.getbornhostnamestring獲取消費這資訊;問題由此引起。
public class messageext extends message
呼叫getbornhostnamestring獲取hostname時會根據ip反查dns伺服器;
inetsocketaddress inetsocketaddress = (inetsocketaddress)this.bornhost;
return inetsocketaddress.getaddress().gethostname();
三、後記
將getbornhostnamestring注釋或者直接返回ip,ecs的消費效能基本穩定在3萬左右。
備註:感謝公司測試同學魏華和容器專家陶漢輝對訊息的效能一遍又一遍的測試和排查。
一次Rocketmq的維修之路
始終不知道開發和運維的區別。現在我這全套環境都是自己搭建的 1 起因 專案本地啟動,本地和測試環境使用同樣的topic,又不想單獨建立topic,計畫更改mq的配置,可以自動建立topic和topic消費組 3 結論 要先啟動nameserver,再啟動broker。因為broker要向namese...
記一次解決oracle sql效能瓶頸的問題
先上sql select select m.album id from album r music am,album m where am.music id m.music id and am.album id m.album id and rownum 1 album id,select m.al...
記一次Kafka 消費 轉存 ES
前提 流程是消費kafka資料,處理後存入es 基礎引數 es 個節點 索引20個分片 個副本 2 kafka 3個節點,12個 分割槽 出現的問題有 1 多執行緒消費kafka,無限重新分配rebalance,消費異常,資料無法消費處理至es 實際情況 1 當資料量達到20億條後 doc總大小已超...