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

Redis key 消失之謎

數據庫
本文從一次生產環境業務服務報錯,逐步對問題進行定位,深入分析之后發現導致問題的原因,給出相應的優化方法,提升業務可用性。

本文從一次生產環境業務服務報錯,逐步對問題進行定位,深入分析之后發現導致問題的原因,給出相應的優化方法,提升業務可用性。

1分鐘看圖掌握核心觀點??

01、問題描述

1.1報錯信息

應用服務報錯,通過監控日志發現凌晨2點的時候,應用報錯獲取不到Redis key。

1.2告警與監控信息

首先想到是否由于內存滿導致的key淘汰,生產的所有Redis都有設置內存告警,但沒有收到內存告警信息;(內存告警需要每隔10秒,連續3次觸發才會告警。)

從監控圖中,可以看到Redis內存稍有增長,但使用率一直偏低,并沒有達到使用率告警。

查看監控信息:在問題時間點,發生了大量的key過期,初步懷疑是由于key批量設置了過期時間,正好到期了導致大量key失效。

查看Redis錯誤日志,沒有發現異常。

02、問題定位

  • 基于前面的監控,初步懷疑是key設置了過期時間導致失效。
  • 是否有上線其他新功能導致?

但是業務反饋不是由于設置過期時間導致;并且第二天問題復現,因此繼續深入定位。

2.1key是否過期

  • 查看淘汰策略
  • 查看key過期時間

初步判斷確實不是因為key過期導致的大量淘汰,這里TTL接近5天,但是連著2天出現問題,因此不應該是過期時間到了導致。

xxx:xxx> config get'maxmemory-policy'
1)"maxmemory-policy"
2)"volatile-lru"
xxx:xxx> ttl finance:xxxx_cms_version_10000
-> Redirected to slot [9229] located at xxx:xxx
(integer)387585
xxx:xxx> ttl finance:xxxcms_basic_data_10423
(integer)387574

key是被刪除還是淘汰?查看監控,發現存在key確實被淘汰,說明接下來需要考慮內存問題。

2.2是否內存滿了

發現確實短時間內存寫滿了,一開始查看監控由于時間拉的比較長,查看增長趨勢沒發現內存寫滿情況,但是由于沒有達到告警條件,沒有滿足連著3次觸發閾值,故沒有觸發告警。

同時內存用滿問題持續時間較短,約10分鐘左右。

其他指標檢查,發現出現問題時client_longest_output_list指標存在明顯突刺,該指標非常可疑。

請求量的大漲,懷疑是請求堆積導致buffer增長使得內存寫滿。但是此時還有疑點:寫入也上漲,是否是由于讀請求積壓導致,還是因為寫入數據導致內存滿?

2.3找出內存漲的來源

設置定時任務,對出問題時間點前后20分鐘這段時間進行抓包分析。

對比出問題前后幾分鐘的請求,對應時間點請求量飆升,并且請求量來源基本是get請求,set請求也少量增長。

4860 get finance:xxxx__10122
4925 get finance:xxxx__10032
4945set finance:xxxx_data_10013-0
4947 get finance:xxxx_data_10013_cms_version_10000
4976 get finance:xxxx__10251
5054set finance:xxxx__undefined
5098 get finance:xxxx__10018
8729 get finance:xxxx_data_10415_cms_version_10000
9152 get finance:xxxx_data_10401_cms_version_10000
9553 get finance:xxxx_data_10228_cms_version_10000
9597 get finance:xxxx_data_10213_cms_version_10000
9622 get finance:xxxx_data_10032_cms_version_10000
9647 get finance:xxxx_data_10347_cms_version_10000
9674 get finance:xxxx_data_10182_cms_version_10000
9742 get finance:xxxx_data_10251_cms_version_10000
10085 get finance:xxxx_data_10019_cms_version_10000
23064 get finance:xxxx__10423
45176 get finance:xxxx_data_10423_cms_version_10000 


[root@db-prd-xxx.v-bj-3.vivo.lan:/data/redis/scpdir]


# cat 0807.cap | grep '2024-08-07 01:59'|awk '{print $8,$10}'|sort |uniq -c |sort -k 1 -n

同時也對set的內容進行分析,發現set的數據并不足使內存寫滿;且上面監控可以看到,內存寫滿問題持續時間很短,因此應該不是數據增長導致。

進一步對get請求來源分析:



次數





IP來源





161179





1xx.xx.xx.72





138236





1xx.xx.xx.215





130110





1xx.xx.xx.190





101877





1xx.xx.xx.185



結合 IP來源以及 keyname;跟業務同學溝通確認:

由于業務讀請求量大漲導致,業務請求從每分鐘27w左右上漲到70w左右,主要有:



次數





IP來源





keyname





330660





get





finance:f2e:xxx_cms_version_10000





230735





get





finance:f2e:xxx_data_10423





36653





set





finance:f2e:xxx_data_10423





34251





set





finance:f2e:xxx_cms_version_10000



2.4機制分析

內存用量上漲超限會觸發Redis節點基于已經配置的volatile-lru策略進行過期數據淘汰,所以需要找到內存上漲的來源。基于監控指標排查分析,基本確定了發生異常期間沒有集中的大量數據寫入,反而發現大量網絡數據的輸出,抓包也印證了此時節點主要是在處理get命令讀請求。進一步地發現了client-output-buffer-limit這個指標出現異常上漲,才最終鎖定到Redis的回包積壓問題。

關于Redis的結果回包邏輯,首先要了解Redis的結果存儲空間設計。Redis針對每一個連接客戶端都會初始化一個大小為16K的靜態的buf區域和一個空的鏈表結果,相關聲明代碼如下:

#define REDIS_REPLY_CHUNK_BYTES (16*1024) /* 16k output buffer */
char buf[REDIS_REPLY_CHUNK_BYTES];
list *reply;
c->reply = listCreate();

對于Redis而言正常執行的命令都會有數據回包,而回包結果都需要在客戶端中做暫存。Redis是如何結合以上兩個數據進行結果存儲的呢?主要邏輯是如果靜態buf區域能夠滿足回包結果存儲,即結果不大于16k,那么結果就會存儲靜態buf中,將結果不斷插入reply鏈表中;同時我們都知道Redis支持豐富的數據類型和操作命令,有些批量數據讀取命令的結果可能會有很多字段,這些字段也會作為一個個鏈表元素追加到reply鏈表中。正常情況下,我們在Redis節點上執行info clients命令可以獲得如下客戶端的統計信息:

> info clients 
 # Clients 
 connected_clients:  1
 client_longest_output_list:  0
 client_biggest_input_buf:  0
 blocked_clients:

其中的client_longest_output_list字段代表此時節點的所有連接客戶端中回包結果的緩存情況。

但是按照之前服務監控和抓包結果分析,具體執行的指令都是get,實際數據也沒有超過16k大小,并沒有滿足將結果存儲到鏈表的條件。這里有個經常被忽略的場景,就是Redis其實支持pipeline命令執行方式的,簡單來說就是Redis支持一次性接收一個客戶端的多個指令,具體執行過程中會把這些指令的結果不斷暫存,然后在后續流程中集中回包,如果這時候不能及時地把數據通過網絡發出去,就有可能出現reply鏈表長度激增的現象,進而導致客戶端占用內存激增,這正是我們本次遇到的場景。

Redis的maxmemory參數限制的是Redis實例可以使用的最大內存,這部分內存主要包括以下幾個部分:業務數據占用的內存、客戶端連接的輸入/輸出緩沖區、復制積壓緩沖區、AOF 緩沖區以及其他一些內部開銷。

具體來說,Redis 的maxmemory 限制包括:

  1. 業務數據占用的內存,這部分是用戶在Redis中存儲的數據。
  2. 客戶端連接的輸入/輸出緩沖區,用于暫存客戶端發送的命令和Redis 返回給客戶端的數據。
  3. 復制積壓緩沖區:用于主從復制,當從節點斷線重連時,可以從這個緩沖區拉取丟失的數據。
  4. AOF 緩沖區:用于持久化,當開啟AOF 持久化時,Redis 會將寫操作追加到AOF 緩沖區,然后異步地寫入AOF 文件。
  5. 其他內部開銷:包括Redis 進程本身的一些數據結構、對象、碎片內存等。

因此,在設置Redis 的maxmemory 參數時,需要綜合考慮業務數據的內存占用、各個緩沖區的大小以及內存碎片率等因素,合理地分配內存,避免出現內存溢出或性能下降的問題。

03、問題解決

3.1緊急修復

  • 臨時擴大Redis集群內存,避免內存寫滿。
  • 限制client-output-buffer-limit大小,避免由于請求過大導致內存突增。
  • 業務限流&削峰,避免請求量突增。
  • 增加兜底機制,如果由于Redis key被淘汰,則去MySQL查詢,避免業務直接報錯。

3.2根本解決

業務進行業務邏輯優化,將請求打散,避免同一時間集中大量請求Redis。

04、總結

本次問題是由于業務集中請求Redis,導致緩存積壓內存增長達到最大內存限制,觸發Redis淘汰策略對key進行驅逐。key被淘汰丟失后,需要增加兜底機制去DB側請求避免業務報錯。雖然Redis性能比較好,但是也要盡量打散請求,合理評估存儲側的性能。

同時,對于Redis淘汰策略,對于數據比較重要的集群,可以考慮使用不驅逐的方式。合理設置TTL保留時間,把Redis的內存使用率保持在安全的區域。

責任編輯:龐桂玉 來源: vivo互聯網技術
相關推薦

2021-08-17 07:05:23

springboot InputStreamparameter

2021-04-26 05:45:43

字符串制表符PyCharm

2023-09-22 11:48:37

2011-07-06 12:04:53

架構

2012-03-28 09:48:45

2013-03-01 11:00:23

2009-11-19 11:03:51

Oracle LogM

2025-05-12 04:20:00

Linux系統epoll

2021-05-30 19:29:12

內存Go語言

2024-05-29 12:47:27

2020-03-31 17:05:39

Redis熱 key代理

2025-05-28 03:10:00

2011-06-28 13:43:50

Java EE

2017-01-13 10:35:23

2022-11-03 08:56:43

RediskeyBitmap

2010-04-07 11:09:53

2024-11-26 08:09:58

2021-03-28 21:33:07

Redis熱點key

2015-03-24 11:34:53

深圳互聯網

2017-04-17 06:07:01

React Nativ開發性能
點贊
收藏

51CTO技術棧公眾號

亚洲精品亚洲人成在线| 丁香花在线观看完整版电影| 久久99精品视频| 欧美成人激情图片网| 无码人妻一区二区三区在线| 成人一区福利| 亚洲三级在线免费| 久久精品丝袜高跟鞋| 中文字幕精品一区二区精| 欧美a级片网站| 亚洲精品综合久久中文字幕| 999精彩视频| 国产福利在线免费观看| 国产日韩精品一区二区浪潮av| 成人看片人aa| 男人天堂2024| 欧美日本不卡高清| 中文字幕在线成人| 免费黄色三级网站| 电影91久久久| 在线免费观看日韩欧美| 2019日韩中文字幕mv| 亚洲图片88| 91亚洲精华国产精华精华液| 国产精品私拍pans大尺度在线 | а√天堂资源在线| 日韩在线观看一区二区| 久久久久一本一区二区青青蜜月| 欧美成人短视频| 欧美美女黄色| 欧美va在线播放| 色呦色呦色精品| 成人做爰视频www网站小优视频| 一区二区三区不卡视频 | 在线观看av中文字幕| 成人国产精品久久| 欧美日韩国产高清一区二区 | 精品少妇theporn| 99久久综合| 色偷偷噜噜噜亚洲男人| 日韩一区二区a片免费观看| 极品束缚调教一区二区网站| 日韩一区二区电影在线| 夜夜夜夜夜夜操| 成人精品国产亚洲| 欧美性生活一区| 日本在线观看a| 欧美极品videos大乳护士| 一区二区三区久久| 国产经典久久久| 黄色成人影院| 亚洲欧洲一区二区在线播放| 亚洲日本japanese丝袜| 91美女视频在线| 中文子幕无线码一区tr| 亚洲成人蜜桃| 在线视频二区| 国产精品久久午夜夜伦鲁鲁| 樱花www成人免费视频| 一本一道波多野毛片中文在线| 国产欧美视频在线观看| 婷婷久久青草热一区二区| 亚洲人视频在线观看| 99久久综合99久久综合网站| 久久久com| 毛片免费在线观看| 欧美激情自拍偷拍| 亚洲高清在线播放| 免费黄色在线网站| 亚洲伦在线观看| 日韩欧美精品免费| 婷婷电影在线观看| 欧美性一二三区| 一女二男3p波多野结衣| 日韩免费成人| 亚洲成人久久电影| 午夜理伦三级做爰电影| 欧美裸体在线版观看完整版| 日韩小视频网址| 久久人人爽人人爽人人| 国产伦理一区| 国产精品视频yy9099| 97人妻一区二区精品免费视频 | 国产精选一区二区| 久久国产精品高清一区二区三区| 国产日本欧美一区二区| 中文字幕一区二区三区乱码| 国内小视频在线看| 日韩欧美精品中文字幕| 天天综合网久久| 国产精品黄网站| 国产一区二区三区视频在线观看| 在线免费看视频| 国产精品红桃| 国产精品久久99久久| 99草在线视频| 久久夜色精品国产欧美乱极品| 色中色综合成人| 欧美日韩经典丝袜| 欧洲精品中文字幕| 苍井空张开腿实干12次| 国产欧美日韩精品一区二区三区 | 亚洲精品美女网站| 国产一区在线观看免费| 亚洲精品专区| 成人免费自拍视频| 亚洲av成人无码久久精品老人| 国产精品美女视频| 91成人在线观看喷潮教学| 九九九精品视频| 日韩二区三区在线| 九九热视频在线免费观看| 宅男噜噜噜66一区二区| 亚洲一区美女视频在线观看免费| 亚洲国产精品久久久久久久| 中文字幕巨乱亚洲| 欧美国产亚洲一区| 麻豆一二三区精品蜜桃| 在线播放亚洲激情| 日韩欧美视频在线免费观看| 国内精品不卡在线| 日本不卡在线播放| 在线看片福利| 精品久久久三级丝袜| 亚洲 欧美 变态 另类 综合| 久久亚洲精品伦理| 国产一区二区三区高清| 成人日批视频| 欧美美女一区二区在线观看| a毛片毛片av永久免费| 亚洲第一在线| av日韩免费电影| 黄色片网站在线观看| 在线欧美一区二区| 97超碰在线资源| 在线亚洲伦理| 国产一区二区三区四区五区加勒比| 欧美日韩xx| 欧美亚洲综合色| 色欲狠狠躁天天躁无码中文字幕| 国产日韩1区| 久久精品一二三区| 亚洲一二三四| 亚洲图片在线综合| 日韩 国产 欧美| 久久久精品欧美丰满| 欧美女人性生活视频| 天堂av一区二区三区在线播放 | 欧美日韩中文视频| 国产69精品一区二区亚洲孕妇| 喜爱夜蒲2在线| 日韩精品久久久久久久软件91| 日韩一级黄色av| 国产精品视频久久久久久| 国产精品国产精品国产专区不蜜| 九色porny自拍| 国产大片一区| 999国内精品视频在线| 国产激情视频在线观看| 日韩欧美色综合网站| wwwav国产| 成人免费毛片app| 超碰成人免费在线| 色婷婷综合久久久久久| 日本一欧美一欧美一亚洲视频| 国产午夜在线观看| 在线不卡免费欧美| 国产网站在线看| 久久久精品影视| 亚洲一二三不卡| 韩日成人av| 欧美高清性xxxxhd| 国产麻豆一区| 久久视频在线看| 丰满肥臀噗嗤啊x99av| 欧美日韩精品在线视频| 好吊视频在线观看| 久久99精品国产.久久久久久 | 亚洲精品国产精品国自| 国产综合久久久久久鬼色| 久久久国内精品| 久久不卡国产精品一区二区| 国产日韩精品综合网站| 日韩三级电影视频| 亚洲欧美三级在线| 国产永久免费视频| 亚洲成人精品一区二区| 91l九色lporny| 国产精品99久久久久久似苏梦涵| 91好吊色国产欧美日韩在线| 久久久综合色| 国产日韩欧美二区| 欧美高清你懂的| 亚州成人av在线| 欧美三级黄网| 精品视频在线导航| 国产人妖在线播放| 欧美视频一二三| 欧美日韩人妻精品一区二区三区| 久久久三级国产网站| 农村末发育av片一区二区| 卡一卡二卡三在线观看| 亚洲91视频| 久久婷婷人人澡人人喊人人爽| 国产精品久久久久久吹潮| 欧美激情视频免费观看| yiren22亚洲综合伊人22| 精品国产污网站| 亚洲视频在线观看免费视频| 亚洲国产美女搞黄色| 羞羞在线观看视频| 不卡高清视频专区| 在线观看中文av| 全国精品久久少妇| 波多野结衣之无限发射| 中文字幕人成人乱码| 日韩欧美精品一区二区| 天天做夜夜做人人爱精品| 91影视免费在线观看| 99热播精品免费| 欧美一级黄色网| 黑人玩欧美人三根一起进| 日韩在线中文字幕| 国产剧情在线观看| 日韩av中文字幕在线播放| h狠狠躁死你h高h| 欧美日韩国产三级| 无码人妻丰满熟妇精品区| 图片区日韩欧美亚洲| 久久久久久久久久久久国产| 亚洲人成小说网站色在线 | **欧美大码日韩| 9.1片黄在线观看| 国产午夜精品一区二区三区视频| 中出视频在线观看| a美女胸又www黄视频久久| avtt中文字幕| 国产成人99久久亚洲综合精品| 亚洲色图欧美自拍| 国产剧情av麻豆香蕉精品| www.久久久久久久久久久| 奇米一区二区三区| 国产三级国产精品国产专区50| 久色成人在线| www.日本xxxx| 日本不卡高清视频| av网站在线不卡| 久久精品国产精品亚洲精品| www.99r| 精品一区二区三区在线观看| 五月婷婷之婷婷| 国产精品18久久久久久久网站| 伊人影院综合在线| 国产一区欧美日韩| 黑人玩弄人妻一区二区三区| av亚洲精华国产精华精| 欧洲一级黄色片| 久久久久国产一区二区三区四区| jizz中文字幕| 国产精品视频你懂的| 日本精品人妻无码77777| 亚洲综合久久久久| 黄色一级片免费看| 色综合婷婷久久| 中文字幕+乱码+中文字幕明步 | 理论在线观看| 亚洲最新av网址| 欧美videos极品另类| 另类视频在线观看| 黄页在线观看免费| 奇米四色中文综合久久| 视频一区在线免费看| 成人黄色网免费| 澳门成人av| 欧美日韩高清免费| 天天综合亚洲| 国产免费黄色一级片| 丝袜国产日韩另类美女| 中文字幕亚洲欧洲| 不卡电影免费在线播放一区| 亚洲一区二区观看| 亚洲欧美激情在线| 青青青国产在线| 欧美久久一二三四区| 高h放荡受浪受bl| 中文字幕日韩精品有码视频| а天堂中文在线官网| 日本一区二区在线免费播放| 99tv成人影院| 久久精品aaaaaa毛片| 91欧美日韩| av网站在线观看不卡| 国产美女视频91| 大又大又粗又硬又爽少妇毛片| 亚洲免费观看高清完整版在线观看熊| 看片网址国产福利av中文字幕| 欧美日韩国产综合久久 | 最近2019免费中文字幕视频三| 日本片在线观看| 国产福利成人在线| 88久久精品| 一本一生久久a久久精品综合蜜| 亚洲久色影视| 久久精品无码一区二区三区毛片 | 中文字幕电影av| 色天使色偷偷av一区二区| 精品久久人妻av中文字幕| 国产一区二区三区18| www555久久| 91免费综合在线| 日韩欧美国产精品综合嫩v| 欧美变态另类刺激| 国产91精品久久久久久久网曝门| 国产一区第一页| 91成人免费在线视频| 天堂av中文字幕| 欧美日韩福利在线观看| 日韩伦理一区二区| 欧美在线日韩精品| 一区二区三区高清视频在线观看| 国产精品成人免费一区久久羞羞| 国产精品成人午夜| 久久久久久亚洲av无码专区| 亚洲国产高潮在线观看| av免费在线网站| 成人免费自拍视频| 成人在线电影在线观看视频| 国产淫片av片久久久久久| 99热精品国产| 丰满少妇乱子伦精品看片| 亚洲国产成人精品久久| 久操av在线| 国产精品对白刺激久久久| 欧美一区视频| 中文字幕第10页| 亚洲视频一区二区在线观看| 在线视频欧美亚洲| 中文字幕亚洲综合久久筱田步美| 欧美日韩亚洲国产| 一区二区高清在线| 亚洲少妇一区二区三区| 一区二区三区日韩欧美精品| 国产麻豆免费视频| 久久精品久久精品亚洲人| 亚洲欧美久久精品| 99热这里只有精品7| 国产伦精品一区二区三区视频青涩 | 欧美另类在线播放| 136福利精品导航| 欧美一区二区视频在线播放| 国产不卡一区视频| 国产在线观看免费视频今夜| 精品精品欲导航| 黄色漫画在线免费看| 明星裸体视频一区二区| 视频一区欧美精品| 91狠狠综合久久久久久| 在线播放91灌醉迷j高跟美女| 黄视频网站在线看| 97免费资源站| 国产欧美日韩一区二区三区在线| 黄色国产在线观看| 欧美性xxxxxx少妇| 黄色成年人视频在线观看| 国产精品一区在线观看| 久久精品网址| 午夜激情福利电影| 精品福利二区三区| 久久r热视频| 最新国产精品久久| 国产91丝袜在线18| 欧美性猛交bbbbb精品| 最近2019年好看中文字幕视频| 亚洲精品在线播放| 97国产精东麻豆人妻电影| 欧美激情一区二区三区蜜桃视频| 国产女无套免费视频| 91国产视频在线播放| 成人在线免费小视频| 亚洲一区二区三区四区五区| 亚洲国产成人91porn| 国产精品一二三区视频| 亚洲bt天天射| 新67194成人永久网站| 自拍偷拍第9页| 亚洲国产精品久久精品怡红院| 日韩高清成人| 国产一二三区在线播放| 国产女同性恋一区二区| www日本在线| 国产精品美女主播在线观看纯欲| 欧美国产91| 亚洲成人黄色av| 日韩免费看网站| 欧美日韩精品一区二区三区视频| 黄色片免费在线观看视频| 国产午夜精品一区二区三区四区| 午夜精品久久久久久久爽| 国产精品久久久久久久久久免费| 国语精品一区|