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

日常Bug排查-系統失去響應-Redis使用不當

存儲 存儲軟件 Redis
開發反應線上系統出現失去響應的現象,收到業務告警以及頻繁MarkAndSweep(Full GC)告警。于是找到筆者進行排查。

[[400658]]

前言

日常Bug排查系列都是一些簡單Bug排查,筆者將在這里介紹一些排查Bug的簡單技巧,同時順便積累素材^_^。

Bug現場

開發反應線上系統出現失去響應的現象,收到業務告警以及頻繁MarkAndSweep(Full GC)告警。于是找到筆者進行排查。

看基礎監控

首先呢,當然是看我們的監控了,找到對應失去響應的系統的ip,看下我們的基礎監控。

機器內存持續上升。因為我們是java系統,堆的大小一開始已經設置了最大值。

  1. --XX:Xms2g -Xmx2g 

所以看上去像堆外內存泄露。而FullGC告警只是堆外內存后一些關聯堆內對象觸發。

看應用監控

第二步,當然就是觀察我們的應用監控,這邊筆者用的是CAT。觀察Cat中對應應用的情況,很容易發現,其ActiveThread呈現不正常的現象,竟然達到了5000+多個,同時和內存上升曲線保持一致。

jstack

java應用中遇到線程數過多的現象,首先我們考慮的是jstack,jstack出來對應的文件后。我們less一下,發現很多線程卡在下面的代碼棧上。

  1. "Thread-1234 
  2.     java.lang.Thread.State: WAITING (parking) 
  3.         at sun.misc.Unsafe.park 
  4.         ...... 
  5.         at org.apache.commons.pool2.impl.LinkedBlockingQueue.takeFirst 
  6.         ...... 
  7.         at redis.clients.util.Pool.getResource 

很明顯的,這個代碼棧指的是沒有獲取連接,從而卡住。至于為什么卡這么長時間而不釋放,肯定是由于沒設置超時時間。那么是否大部分線程都卡在這里呢,這里我們做一下統計。

  1. cat jstack.txt | grep 'prio=' | wc -l  
  2. ======> 5648 
  3. cat jstack.txt | grep 'redis.clients.util.Pool.getResource'  
  4. ======> 5242 

可以看到,一共5648個線程,有5242,也就是92%的線程卡在Redis getResource中。

看下redis情況

  1. netstat -anp | grep 6379  
  2. tcp 0 0 1.2.3.4:111 3.4.5.6:6379 ESTABLISHED 
  3. ...... 

一共5個,而且連接狀態為ESTABLISHED,正常。由此可見他們配置的最大連接數是5(因為別的線程正在等待獲取Redis資源)。

Redis連接泄露

那么很自然的想到,Redis連接泄露了,即應用獲得Redis連接后沒有還回去。這種泄露有下面幾種可能:

情況1:

情況2:

情況3:

調用Redis卡住,由于其它機器是好的,故排除這種情況。

如何區分

我們做個簡單的推理:

如果是情況1,那么這個RedisConn肯定可以通過內存可達性分析和Thread關聯上,而且這個關聯關系肯定會關聯到某個業務操作實體(例如code stack or 業務bean)。那么我們只要觀察其在堆內的關聯路線是否和業務相關即可,如果沒有任何關聯,那么基本斷定是情況2了。

可達性分析

我們可以通過jmap dump出應用內存,然后通過MAT(Memory Analysis Tool)來進行可達性分析。

首先找到RedisConn

將dump文件在MAT中打開,然后運行OQL:

  1. select * from redis.clients.jedis.Jedis (RedisConn的實體類) 

搜索到一堆Jedis類,然后我們執行

  1. Path To GCRoots->with all references 

可以看到如下結果:

  1. redis.clients.jedis.Jedis 
  2.     |->object  
  3.         |->item 
  4.             |->first 
  5.                 |->... 
  6.                     |->java.util.TimerThread 
  7.                 |->internalPool 

由此可見,我們的連接僅僅被TimerThread和internalPool(Jedis本身的連接池)持有。所以我們可以判斷出大概率是情況2,即忘了歸還連接。翻看業務代碼:

  1. 偽代碼 
  2. void lock(){ 
  3.     conn = jedis.getResource() 
  4.     conn.setNx() 
  5.     // 結束,此處應該有finally{returnResource()}或者采用RedisTemplate 

最后就是很簡單的,業務開發在執行setNx操作后,忘了將連接還回去。導致連接泄露。

如果是情況1如何定位卡住的代碼

到此為止,這個問題是解決了。但是如果是情況1的話,我們又該如何分析下去呢?很簡單,我們如果找到了jedis被哪個業務線程擁有,直接從heap dump找到其線程號,然后取Jstack中搜索即可知道其卡住的代碼棧。

  1. jmap: 
  2. redis.clients.jedis.Jedis 
  3.     |->Thread-123 
  4.  
  5. jstack: 
  6.  
  7. Thread-123 prio=... 
  8.     at xxx.xxx.xxx.blocked 

總結

這是一個很簡單的問題,知道套路之后排查起來完全不費事。雖然最后排查出來是個很低級的代碼,但是這種分析方法值得借鑒。

責任編輯:武曉燕 來源: 解Bug之路
相關推薦

2020-10-22 07:09:19

TCP網絡協議

2021-06-10 06:59:34

Redis應用API

2021-09-11 19:00:54

Intro元素MemoryCache

2019-10-10 15:40:17

redisbug數據庫

2009-12-17 14:53:52

VS2008程序

2022-10-25 18:00:00

Redis事務生產事故

2021-08-26 14:26:25

Java代碼集合

2021-07-11 09:34:45

ArrayListLinkedList

2022-06-21 11:24:05

多線程運維

2025-07-28 06:38:07

2025-07-16 07:20:00

開發代碼并發

2024-02-04 08:26:38

線程池參數內存

2024-06-28 10:01:04

2011-08-18 13:49:32

筆記本技巧

2021-06-04 11:33:50

消息技巧排查

2024-09-05 08:07:55

2024-05-13 10:21:43

Bug排查TCP

2021-06-07 09:37:05

異常Bug排查

2010-01-06 10:56:47

華為交換機使用

2021-05-19 14:03:48

磁盤故障
點贊
收藏

51CTO技術棧公眾號

欧美精品色图| h片精品在线观看| 精品国产一区一区二区三亚瑟 | 日韩伦理片在线观看| 怡红院精品视频在线观看极品| 天天综合网 天天综合色| 50路60路老熟妇啪啪| 超碰成人久久| 久久久久亚洲精品国产| 国产黄色在线| 一区二区三区欧美亚洲| 亚洲伊人成综合成人网| 日韩在线精品强乱中文字幕| 91麻豆精品在线观看| 亚洲人一区二区| 精品视频一二| 亚洲欧美精品一区| 亚洲天堂手机| 欧美日韩中文字幕一区| 精品推荐蜜桃传媒| 中文字幕成人网| 久久天天东北熟女毛茸茸| 一区二区三区韩国免费中文网站| 色综合中文综合网| 国产精品99久久99久久久| 亚洲人成在线观看一区二区| 欧美精品久久一区二区三区| 日韩欧美亚洲系列| 欧美日韩黄色一区二区| 精品伦理一区二区| 国产精品污污网站在线观看| 一区二区不卡视频| 成人av午夜电影| 日韩久久在线| 激情久久五月天| 成年人免费网站| 久久亚洲精精品中文字幕| 在线精品国精品国产尤物884a| 日日摸天天爽天天爽视频| 激情小说亚洲一区| 欧美大黑帍在线播放| 久久久久久夜| 亚洲第一页在线视频| 欧美丰满日韩| 日本精品视频在线观看| 成人精品视频在线观看| 日韩av第一页| 婷婷亚洲天堂| 色综合色综合色综合| 欧美羞羞视频| 91av在线免费观看视频| 欧美激情视频一区二区三区在线播放 | 亚洲欧美日本国产有色| 国产精品乱码久久久久久| 欧美人体视频xxxxx| 国产精品久久久久久久久久久久久久 | 精品成人av一区| 男女视频在线| 成人欧美视频在线| 日日摸夜夜添夜夜添国产精品| 黄色网免费看| 久久久999精品视频| 今天的高清视频免费播放成人| 日本黄大片在线观看| 国产乱色在线观看| 欧美专区亚洲专区| 亚洲精品动态| 妞干网在线视频观看| 亚洲精品久久久久久久久| 日韩一二三区在线观看| 青草全福视在线| 亚洲精品视频在线看| 国产精品色呦| 99re在线视频播放| 欧美成人精品三级在线观看| 激情五月婷婷综合| 九九热精品在线播放| 欧美在线视频一二三| 玉米视频成人免费看| 亚洲天堂网站| 高潮白浆视频| 91视频免费在线观看| 色综合天天综合| 手机精品视频在线观看| 热色播在线视频| 久久久久网址| 亚洲精品福利在线| 日韩中文字幕亚洲一区二区va在线| 欧美 日韩 激情| 91精品国产综合久久久久久 | 亚洲国产一区在线观看| 国产精品日本一区二区不卡视频| 成人免费看片网站| 91视视频在线观看入口直接观看www| 激情视频网站在线播放色| 三年中文高清在线观看第6集| 主播福利视频一区| 成人av资源网站| 久久99高清| 久久久999成人| 欧美午夜久久久| 九一久久久久久| 亚洲婷婷伊人| 成人免费xxxxx在线视频| 亚洲国产三级网| 亚洲伦伦在线| 亚洲成人看片| melody高清在线观看| 欧美黄色免费网址| 永久免费看mv网站入口亚洲| 亚洲成a人在线观看| 日日夜夜免费精品视频| 亚洲理论电影| 日韩电影精品| 免费黄色在线| 在线免费日韩| 资源网第一页久久久| 国产啪精品视频网站| 欧美日韩国产影片| 国产一本一道久久香蕉| free性护士videos欧美| 日本中文字幕亚洲| 日韩**中文字幕毛片| 一个色综合导航| 精品日产卡一卡二卡麻豆| 午夜精品一区在线观看| 国产欧美日韩卡一| 懂色av中文一区二区三区| 99热这里只有精品8| 欧美色女视频| 成人亚洲免费| 亚洲涩涩在线| 国产美女精品写真福利视频| 国产精品一区二区三区四区色| 青青草原成人网| 一本久道高清无码视频| 久久久久久久香蕉| 亚洲一区二区三区涩| 国产91色在线|亚洲| 成人91免费视频| 欧美高清一区二区| 韩国黄色一级大片| 免费在线看黄色片| 欧美三级理论片| 国产毛片毛片| 两个人hd高清在线观看| 黄色直播在线| 黄色视屏免费在线观看| 免费a级在线播放| yellow在线观看网址| 波多野结衣在线影院| 国产精品久久久久一区二区国产 | 在线观看亚洲精品视频| 精品国产一区二区三区忘忧草| 亚洲精品视频二区| 久久av中文字幕| 久久久久免费视频| 99国产视频在线| 欧美激情亚洲激情| 国产三级精品网站| 欧美少妇在线观看| 久草电影在线| 色呦呦久久久| 欧美日韩一二三四| 精品一级视频| 天天综合一区| 91一区二区| 成人avav在线| 欧美丝袜一区二区三区| 亚洲丝袜一区在线| 国产高清精品一区二区| 99国产精品白浆在线观看免费| bdsm精品捆绑chinese| 日本www在线| 天堂资源在线亚洲| 亚洲一区久久| 精品magnet| 亚洲午夜女主播在线直播| 日韩中文字幕国产| 精品乱码一区| 欧美激情精品久久久久久小说| 黄色免费在线观看| 日韩欧美综合| 不卡av在线网| 精品裸体舞一区二区三区| 欧美裸身视频免费观看| 日产精品一线二线三线芒果| 免费在线黄网| 中文字幕av一区二区三区四区| 女人让男人操自己视频在线观看| 一级毛片视频在线| jizz18女人| 日本一级在线观看| sihu成人| 青青青在线视频免费观看| 国产色视频在线播放| av网站手机在线观看| 国产3p露脸普通话对白| 色综合色综合色综合色综合| 色网站免费在线观看|