国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

rocketMQ 很慢?引出了一個未解之謎

開發 開發工具
前段時間發現,在使用rockerMQ console時,查詢消息的時候出現很慢,查詢耗時大于10秒,少則5、6秒,多則14+秒。

本文轉載自微信公眾號「 搬運工來架構」,轉載本文請聯系 搬運工來架構公眾號。

[[329425]]

前段時間發現,在使用rockerMQ console時,查詢消息的時候出現很慢,查詢耗時大于10秒,少則5、6秒,多則14+秒。

如下圖:

 

這到底是為什么?查詢消息為啥會出現這么大的耗時?

當前使用的開發環境:操作系統是Windows10,JDK8,rocketMQ為4.5.2。

在其它機器上則沒有此問題,也在本機器上的虛擬機VMware上安裝的Linux部署了rocketMQ 和 console,并且驗證是沒問題的。

那么到底我的機器是怎么了???

由于當前是接口的耗時問題,我們并不知道耗時主要在哪個地方,所以使用Arthas來跟蹤下調用鏈的耗時。

使用trace命令:

trace命令

方法內部調用路徑,并輸出方法路徑上的每個節點上耗時。

trace 命令能主動搜索 class-pattern/method-pattern 對應的方法調用路徑,渲染和統計整個調用鏈路上的所有性能開銷和追蹤調用鏈路。

trace org.apache.rocketmq.console.service.impl.MessageServiceImpl queryMessageByTopic

 

從當前調用路徑得到主要耗時在于:DefaultMQPullConsumer構造器初始化 + DefaultMQPullConsumer啟動耗時。那么接下來我們繼續往內部跟進。

此時我們關注下DefaultMQPullConsumer構造器初始化:

  1. trace org.apache.rocketmq.client.consumer.DefaultMQPullConsumer <init> 

 

從構造器初始化入口看,耗時并不大。

那么接下來再看下DefaultMQPullConsumer的啟動方法:

[E] 開啟正則表達式匹配,默認為通配符匹配

  1. trace -E  org.apache.rocketmq.client.consumer.DefaultMQPullConsumer start 

 

trace -E org.apache.rocketmq.client.consumer.DefaultMQPullConsumer |start

 

接著發現耗時主要是在獲取MQClientInstance實例。

  1. trace org.apache.rocketmq.client.impl.MQClientManager getAndCreateMQClientInstance  

  1. trace org.apache.rocketmq.client.ClientConfig cloneClientConfig 

 

接著看ClientConfig#cloneClientConfig方法:

  1. public ClientConfig cloneClientConfig() { 
  2.     ClientConfig cc = new ClientConfig(); 
  3.     cc.namesrvAddr = namesrvAddr; 
  4.     cc.clientIP = clientIP; 
  5.     cc.instanceName = instanceName; 
  6.     cc.clientCallbackExecutorThreads = clientCallbackExecutorThreads; 
  7.     cc.pollNameServerInterval = pollNameServerInterval; 
  8.     cc.heartbeatBrokerInterval = heartbeatBrokerInterval; 
  9.     cc.persistConsumerOffsetInterval = persistConsumerOffsetInterval; 
  10.     cc.unitMode = unitMode; 
  11.     cc.unitName = unitName; 
  12.     cc.vipChannelEnabled = vipChannelEnabled; 
  13.     cc.useTLS = useTLS; 
  14.     cc.namespace = namespace; 
  15.     cc.language = language; 
  16.     return cc; 

可以看到很多賦值操作,這些可以不關注,只要關注new ClientConfig():

  1. trace org.apache.rocketmq.client.ClientConfig <init> 

 

可以看到主要耗時在3~4秒,并且耗時主要是這個工具類方法:RemotingUtil#getLocalAddress

  1. trace org.apache.rocketmq.remoting.common.RemotingUtil getLocalAddress 

 

到現在,已經跟蹤到JDK方法調用了:NetworkInterface#getNetworkInterfaces。

接著想查看JDK函數調用:

  1. trace --skipJDKMethod false java.net.NetworkInterface getNetworkInterfaces 

--skipJDKMethod skip jdk method trace, default value true.

默認情況下,trace不會包含jdk里的函數調用,如果希望trace jdk里的函數,需要顯式設置--skipJDKMethod false。

 

此時不能跟蹤,那么根據4點提示排查和issue:https://github.com/alibaba/arthas/issues/47

https://github.com/alibaba/arthas/issues/807

最后確定需要開啟unsafe。

  1. options unsafe true 

 

開啟完成。

再次執行,即可看到jdk的調用鏈了。

 

到這里,算是把rocketMQ console查詢慢的罪魁禍首找到了:在獲取本機網卡接口時,出現耗時時間長。這其實也算是jdk跟操作系統層面的意思了,與中間件rocketMQ無關,一開始我是懷疑是不是持久化存儲在加載時慢的可能(基本排除)。

那么為什么會調用當前操作系統的網卡接口時會出現耗時嚴重呢?

此時關注到了java.net.NetworkInterface#getNetworkInterfaces

  1. public static Enumeration<NetworkInterface> getNetworkInterfaces() 
  2.     throws SocketException { 
  3.     final NetworkInterface[] netifs = getAll(); 
  4.     // specified to return null if no network interfaces 
  5.     if (netifs == null
  6.         return null
  7.     return new Enumeration<NetworkInterface>() { 
  8.         private int i = 0; 
  9.         public NetworkInterface nextElement() { 
  10.             if (netifs != null && i < netifs.length) { 
  11.                 NetworkInterface netif = netifs[i++]; 
  12.                 return netif; 
  13.             } else { 
  14.                 throw new NoSuchElementException(); 
  15.             } 
  16.         } 
  17.         public boolean hasMoreElements() { 
  18.             return (netifs != null && i < netifs.length); 
  19.         } 
  20.     }; 
  21. private native static NetworkInterface[] getAll() throws SocketException; 

可以看到jdk函數已經調用到了native方法,也就是jdk底層的實現(c/c++)了,跟操作系統非常緊密。

接著debug進getNetworkInterfaces方法查看到底有哪些網卡接口:

 

一查發現竟然有81個!接著查看本機的網絡適配器:

 

本機Windows上有Wlan、vpn、VMware等網絡適配器。

最后事實就是跟他們有關,我把相應的適配器禁用之后,重新調用NetworkInterface#getNetworkInterfaces,此時耗時從3+秒降到幾百毫秒。

最后,很遺憾還是沒能剖析出為什么Windows下調用網卡接口native方法會出現那么大耗時。并且肯定跟我的機器有關,因為其他機器驗證沒有問題。

如果要剖析原因,就得需要有c/c++更加底層的功底才能搞定吧?

如果你有遇過知道怎么解決、或熟悉底層實現或者有更好的思路麻煩留言指導下。(抱拳)

總結

 

  • Windows下可能容易出現一些非正常問題,竟然也能給我遇到這個^@^。幸好一般使用Windows還是比較少,除非是開發機器較多,Linux(unix)部署rocketMQ等中間件還是很穩的。
  • 使用Arthas trace可以跟蹤方法的調用路徑,并且追蹤每一步的耗時,可以方便的排查瓶頸問題。
  • -E參數支持正則表達式匹配;--skipJDKMethod false支持包含JDK的函數調用;跟蹤jdk函數等,如果找不到對應類或者方法,可能需要開啟unsafe。

 

責任編輯:武曉燕 來源: 搬運工來架構
相關推薦

2022-11-13 10:07:22

SpringSpringBoot

2021-09-01 08:58:15

項目 UTFailed

2020-06-19 15:49:52

Windows微軟關機

2019-05-13 09:45:41

生成式對抗網絡GANs深度學習

2025-02-11 09:17:57

2017-06-29 14:47:57

2017-12-22 10:23:14

2024-02-04 16:14:38

線程開發

2018-02-02 15:13:42

2019-07-01 09:58:05

鴻蒙系統華為

2021-07-26 17:18:03

Linux進程通信

2024-05-07 09:02:47

2025-07-09 03:00:00

2022-12-20 08:32:02

2023-03-28 16:37:38

論文視頻

2010-08-06 14:05:56

WPF

2024-08-14 08:35:38

sql數據庫OOM 異常

2021-05-27 07:54:21

JavaStateAQS

2017-06-22 09:45:58

阿里云GN5實例深度學習

2017-02-10 09:51:23

點贊
收藏

51CTO技術棧公眾號

成人福利网站在线观看| 日韩欧美久久一区| 国产欧美日本| 狠色狠色综合久久| 亚洲精品国产精品粉嫩| 亚洲精品午夜| 欧美3p在线观看| 亚洲三级在线免费| 清纯唯美亚洲综合| 免费看美女隐私的视频| se69色成人网wwwsex| 大桥未久在线播放| 国产v亚洲v天堂无码久久久| 国产精品久久久久久久天堂第1集 国产精品久久久久久久免费大片 国产精品久久久久久久久婷婷 | 日韩欧美色综合| 国产一区二区毛片| 在线观看亚洲| 亚洲国产精品第一区二区三区| 欧美午夜在线| 欧美123区| 亚洲一区三区视频在线观看| 亚洲视频电影图片偷拍一区| 亚洲男女一区二区三区| 亚洲欧美日韩中文播放| 欧美一区二区三区视频在线观看 | 欧美精品电影免费在线观看| 国产精品久久久久高潮| 最好看的2019的中文字幕视频| 国产欧美欧洲在线观看| 在线无限看免费粉色视频| 超碰在线公开超碰在线| 麻豆一区二区| 久久99久久久欧美国产| 亚洲午夜在线视频| 欧美亚洲日本网站| 亚洲精品人成| 2020中文字幕在线| 日本精品在线| 成人一区视频| 红桃视频在线观看一区二区| 蜜桃视频在线一区| 亚洲私人黄色宅男| 欧美日韩一区二区三区免费看| 亚洲精品在线视频| 国产精品久久久久久久久久东京| 国产精品视频免费一区| 日韩精品一区在线视频| 亚洲美女在线免费观看| 久久爱91午夜羞羞| 国产成人精品免费视| 国产精品国内免费一区二区三区| 久久久三级国产网站| 久久久久www| 婷婷六月激情| 爽成人777777婷婷| 艳妇臀荡乳欲伦亚洲一区| 亚洲白虎美女被爆操| 97色在线视频观看| 不卡视频一区二区三区| 特级西西人体www高清大胆| 米奇.777.com| 欧美xxxx做受欧美88bbw| 久久精品超碰| 亚洲高清极品| 国产乱淫av一区二区三区| 国产嫩草影院久久久久| 精品视频在线看| 国产精品入口免费视频一| 国产精品国产亚洲伊人久久| 欧美一区观看| 又黄又爽无遮挡| 成人国产一区二区三区精品麻豆| 99香蕉国产精品偷在线观看 | 最后生还者第二季在线观看| 97干在线视频| 国产一区视频观看| 国内精品久久久久影院 日本资源| 久久精品国产2020观看福利| 日韩欧美自拍偷拍| 国产清纯在线一区二区www| 丝袜美腿亚洲色图| 888久久久| 猛男gaygay欧美视频| 四虎影视国产精品| 忘忧草在线日韩www影院| 欧美色图第一页| 亚洲一区二区伦理| 成人嘿咻视频免费看| 国产精品极品在线观看| 国产亚洲人成a在线v网站 | 最新国产拍偷乱拍精品| 国产成人aa在线观看网站站| 在线观看麻豆| 91精品国产黑色瑜伽裤| 粗大黑人巨茎大战欧美成人| 在线激情av| 成人在线网站| 精品亚洲综合| 成人看片免费| 日韩av懂色| av一本久道久久综合久久鬼色| 卡通动漫精品一区二区三区| 中文在线综合| 农村少妇一区二区三区四区五区 | 92看片淫黄大片欧美看国产片| 午夜精品视频一区| 在线亚洲免费视频| 欧美性极品少妇| 韩国国内大量揄拍精品视频| 欧美一级爆毛片| 欧美精品日韩一本| 国产一区二区美女视频| 久久久久亚洲精品成人网小说| 日本精品一区二区三区高清 久久| 欧美在线免费看| 国产精品天天狠天天看| 日本一区免费看| 午夜免费高清视频| 91黄页在线观看| 福利写真视频网站在线| 吉吉日韩欧美| 日韩精品一区二区久久| 国产欧美日韩在线看| 国产精品乱子久久久久| 在线视频欧美精品| 中文字幕日韩av电影| 亲子乱一区二区三区电影| 亚洲伊人久久大香线蕉av| 亚洲伊人成综合成人网| 亚洲制服欧美久久| 三级a在线观看| 超碰电影在线播放| 粉嫩一区二区三区| 成人精品一区二区三区中文字幕| 亚洲电影男人天堂| 一本色道久久综合| 综合激情成人伊人| 国产精品大全| 久久久av一区| 高清免费日韩| 久草综合在线观看| 日韩欧美三级| 98视频精品全部国产| 亚洲精品ww久久久久久p站| 国产乱码精品一区二区三区日韩精品 | av在线不卡电影| 成人午夜在线观看| 蜜桃精品wwwmitaows| 一本色道久久综合亚洲精品小说| 草草在线观看| 欧美理论电影在线播放| 国产真实乱子伦| 久久伊人影院| 一区二区三区在线观看视频 | 国内精品视频一区| 无需播放器的av| 91精品国产自产观看在线 | 免费一区二区三区在线观看| 天堂中文8资源在线8| 中文字幕日韩在线| 国产精品视频观看| 4444欧美成人kkkk| 中文天堂av| 91女人视频在线观看| 国产日韩精品久久| 国产精品99视频| 青草热久免费精品视频 | 91美女精品福利| 电影天堂最新网址| 亚洲成年人网站在线观看| av电影在线观看| 欧美一级专区免费大片| 日韩欧美看国产| 九色精品免费永久在线| 亚洲精品一区二区妖精| 中文字幕一区二区三区乱码| 1区2区3区国产精品| 欧美大尺度做爰床戏| 亚洲精品中文在线观看| 在线播放91| 亚洲午夜视频在线| 成人免费网址在线| 久久久久久久久久电影| 男操女免费网站| 国产精品人成在线观看免费 | 欧美13一16娇小xxxx| 五月激情六月综合| 一本大道香蕉8中文在线视频| 岛国av在线不卡| 在线观看黄av| 日韩欧美在线一区二区三区| 中文字幕视频在线| 欧美一区二区在线观看| 欧美大胆成人| 91a在线视频| 日韩午夜av在线| 欧美爱爱视频免费看| 图片区小说区国产精品视频| 九九色在线视频| 国产精品久久久久久久久久东京|