精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美激情a在线| 91网站视频在线观看| 中文字幕免费精品一区高清| 福利在线一区二区三区| 91网在线播放| 精品一区二区三区不卡| 欧美日韩福利电影| 女尊高h男高潮呻吟| 欧美影视资讯| 亚洲日本一区二区| 国产在线视频欧美一区二区三区| 天天操天天干视频| 三上亚洲一区二区| 精品日韩一区二区| 久久精品午夜福利| 久蕉依人在线视频| 国产一区二区电影| 欧美专区在线视频| 日本裸体美女视频| 九色丨蝌蚪丨成人| 在线观看一区日韩| 成人手机在线播放| 免费理论片在线观看播放老| 久久99久久久欧美国产| 97精品免费视频| 亚洲综合图片一区| 国产香蕉精品| 欧美三级午夜理伦三级中视频| 国产一区二区三区播放| 你懂的在线视频| 国产精品一二三四五| 欧美在线视频播放| 亚洲欧美一区二区三区四区五区| 欧美猛男同性videos| 6080国产精品一区二区| 黄色高清无遮挡| 第一中文字幕在线| 亚洲天堂av老司机| 日韩中文字幕一区二区| 国产一区二区三区中文字幕| 午夜亚洲伦理| 久久久久久综合网天天| а天堂中文在线资源| 亚洲免费毛片| 亚洲高清久久网| 天天摸天天舔天天操| 深夜在线视频| 亚洲国产日韩一级| 欧美 亚洲 视频| 日本中文字幕在线2020| 95精品视频在线| av一区二区三区免费| 亚洲视频久久久| 久久国产精品毛片| 91精品国产高清自在线看超| 欧美日韩精品在线观看视频 | 五月天久久久久久| 日本在线播放一区二区三区| 456亚洲影院| 日韩欧美亚洲视频| 黄色一区二区三区四区| 免费成人高清视频| 波多野结衣 在线| 美国一区二区| 日韩精品久久久久| 免费的av网站| 久久视频在线观看| 欧美电影免费提供在线观看| 91香蕉视频免费看| 久久久久九九精品影院| 6080日韩午夜伦伦午夜伦| 99九九99九九九99九他书对| 视频欧美精品| 欧美一激情一区二区三区| 九九热精品国产| av一级久久| 日韩精品专区在线影院重磅| 无码人妻久久一区二区三区蜜桃| 日韩视频一区二区三区四区| 日韩欧美一级片| 熟女人妻一区二区三区免费看| 亚洲伦理网站| 日韩亚洲欧美一区二区三区| 麻豆av免费看| 欧美a一欧美| 国产丝袜一区二区| youjizz亚洲女人| 一区二区三区四区电影| 欧美大片免费看| 日韩免费av片| 日日骚欧美日韩| 国产日韩欧美成人| 99久久久国产精品无码免费| 丰满少妇久久久久久久| 精品999在线观看| 黄色在线小视频| 国产精品久久久久久户外露出 | 日韩中文字幕a| 国产精久久一区二区| 日韩精品一区二区三区视频播放| 久久免费精品国产| 国产一区不卡| 久久久精品视频成人| 久久精品国产亚洲av高清色欲 | 亚洲高清在线看| 久久精品国产99久久6| www日韩av| 亚洲aⅴ在线观看| 中文天堂在线一区| 国产精品国产三级国产专区51| 蜜桃在线视频| 欧美日韩你懂得| 中文字幕天堂av| 狠狠色狠狠色综合婷婷tag| xxxxx91麻豆| 欧美另类一区二区| 韩国一区二区三区| 久久riav二区三区| 黄色成人在线| 欧美日韩一区二区免费在线观看| 不要播放器的av网站| 青草伊人久久| 主播福利视频一区| av资源免费观看| 国产美女一区二区| 欧美日韩亚洲免费| 久久不射影院| 欧美日韩国产一二三| 精品熟女一区二区三区| 日韩欧美精品综合| 欧美在线国产精品| 亚洲第一页视频| 国产嫩草影院久久久久| 青青草精品视频在线| 91视频成人| 亚洲色图激情小说| 日操夜操天天操| 国产精品18久久久久久vr| 色狠狠久久av五月综合| 擼擼色在线看观看免费| 欧美一级精品大片| 在线观看亚洲网站| 免费久久精品视频| 蜜桃传媒视频麻豆一区| 国内老司机av在线| 欧美一级在线观看| 欧美一级特黄高清视频| 秋霞电影网一区二区| 欧美性色黄大片人与善| 女海盗2成人h版中文字幕| 欧美一区二区三区在线| 强制高潮抽搐sm调教高h| 日韩成人伦理电影在线观看| 久久伊人资源站| 91九色美女在线视频| 日韩午夜在线播放| 欧美特黄一级片| 黑人巨大精品欧美黑白配亚洲| 天天人人精品| 成人亚洲免费| 神马国产精品影院av| 亚洲一区中文字幕永久在线| 日本一区二区久久| 中文字幕国产传媒| 日韩国产欧美一区二区| 日本三级韩国三级久久| 欧美白人做受xxxx视频| 色成人在线视频| 日本黄色动态图| 国产情侣一区| 老牛影视免费一区二区| 久久天堂av| 中文欧美日本在线资源| 亚洲最新av网站| 日韩理论片网站| 九九热精品在线播放| 水蜜桃久久夜色精品一区| 成人国产精品一区二区| 九七久久人人| 精品不卡在线视频| 青青青国产在线 | 亚洲欧洲制服丝袜| 在线免费黄色小视频| 精品福利av| 欧美久久久久久| 成人深夜福利| 久久久久久com| 日韩欧美亚洲系列| 欧美色电影在线| 午夜少妇久久久久久久久| 成人精品免费网站| 免费在线激情视频| 三区四区不卡| 国产精品大全| 日韩免费小视频| xvideos成人免费中文版| 女人18毛片水真多18精品| 亚洲一区二区三区三| 国产夫妻性爱视频| 麻豆国产精品一区二区三区| 特级西西444| 日韩美女毛片| 成人淫片在线看| 鲁鲁在线中文| 久久不射热爱视频精品| 五月婷婷六月丁香| 制服丝袜av成人在线看| 成人精品在线看| 中文字幕一区二区三区不卡在线| 任你躁av一区二区三区| 日韩1区2区3区| 成人午夜视频在线观看免费| 欧美在线色图| 国产在线精品一区二区中文 | 在线观看网站黄| 久久电影一区| 亚洲精品蜜桃久久久久久| 九九热线有精品视频99| 亚洲综合在线中文字幕| 二区三区不卡| 欧美激情手机在线视频 | 亚洲欧洲日产国产网站| 99热这里只有精| 日本道精品一区二区三区| 欧美国产日韩综合| 中文字幕一区二区不卡| 欧美高清性xxxx| 国内精品不卡在线| 国产高潮免费视频| 丝袜亚洲另类欧美综合| 日韩av在线第一页| 136国产福利精品导航网址| 欧美激情性做爰免费视频| 日本韩国一区| 精品国产乱码久久久久久免费| 91超薄丝袜肉丝一区二区| 在线观看一区二区精品视频| 少妇高潮av久久久久久| 午夜精品影院在线观看| 国产精品suv一区二区| 亚洲精品国产第一综合99久久| 成人免费视频入口| 国产精品女同一区二区三区| 日韩女同一区二区三区| 久久久一区二区三区捆绑**| 中文字幕av网址| 久久女同性恋中文字幕| 黄色a一级视频| 91在线视频观看| 大黑人交xxx极品hd| 99国产欧美另类久久久精品| chinese麻豆新拍video| 成人app下载| 亚洲一区二区乱码| 91视频国产观看| 人妻av无码一区二区三区| 国产午夜亚洲精品不卡| 美国黄色特级片| 中文字幕在线播放不卡一区| 九九精品视频免费| 亚洲国产一二三| 性无码专区无码| 91成人免费网站| 国产女人18毛片水真多| 欧美一级欧美三级| 农村少妇久久久久久久| 亚洲欧美成人网| 天堂а√在线资源在线| 欧美成人免费全部| a国产在线视频| 日本中文字幕成人| 日韩欧美专区| 国产精品久久久一区二区三区| 欧美自拍视频| 亚洲高清资源综合久久精品| 亚洲人metart人体| 免费观看国产精品视频| 水蜜桃久久夜色精品一区的特点| www.久久久精品| 国产成人精品一区二区三区四区| 中文字幕无码人妻少妇免费| 欧美韩国一区二区| 久久免费视频播放| 欧美无砖砖区免费| 国产黄a三级三级三级| 国产丝袜一区二区三区| 久草免费在线| 欧美一区二三区| 国产一区二区av在线| 久久狠狠久久综合桃花| 国产精品x453.com| 免费看欧美黑人毛片| 老司机午夜精品视频| 日本黄色一级网站| 久久色视频免费观看| 国产在线一卡二卡| 一本色道**综合亚洲精品蜜桃冫| 一级黄色片在线观看| 亚洲电影免费观看高清完整版在线观看 | 中国免费黄色片| 国产日韩精品一区二区三区在线| 真实国产乱子伦对白在线| 色综合久久久久综合99| 亚洲AV无码成人片在线观看| 国产亚洲精品久久久久久777| 任你弄在线视频免费观看| 国产精品久久久久久久久粉嫩av| 一区二区三区四区视频免费观看| 日本在线观看一区二区| 亚洲黄页一区| 一级做a爱视频| 中文av一区二区| 中文字幕亚洲精品一区| 日韩欧美国产一二三区| 91.xxx.高清在线| 日本一区二区三区四区视频| 国产色噜噜噜91在线精品| 国产精品啪啪啪视频| 蜜桃一区二区三区在线观看| 18禁裸乳无遮挡啪啪无码免费| 夜夜爽夜夜爽精品视频| 91精品国产综合久| 国产亚洲精品久久久久久| 欧美电影免费观看网站| 久久精品二区| 在线电影一区| 亚洲熟女一区二区三区| 一区二区三区免费| 国产精品久久久久久久免费| 中文字幕亚洲精品| 精品无人乱码一区二区三区 | 亚洲欧洲中文字幕| 亚洲精品手机在线观看| 国产精品嫩草久久久久| 无码无套少妇毛多18pxxxx| 亚洲男人天堂2019| 在线男人天堂| 久久国产一区二区| 久久福利毛片| 国产三级av在线播放| 日本精品视频一区二区| 国产大学生校花援交在线播放| 热久久这里只有| 日韩伦理一区二区三区| av片中文字幕| 国产亚洲精品aa午夜观看| 国产在线一级片| 色yeye香蕉凹凸一区二区av| 欧美综合影院| 色哺乳xxxxhd奶水米仓惠香| 国产精品资源站在线| 九九九在线视频| 精品久久久久久久久久久久久久久 | 亚洲综合精品国产一区二区三区| 国产亚洲一区二区精品| 最新日韩一区| 亚洲成年人专区| 国产成人精品网址| 精品少妇一二三区| 亚洲国产美女精品久久久久∴| 日韩激情电影免费看| 免费观看国产成人| 欧美aaaaa成人免费观看视频| 成人黄色短视频| 精品剧情在线观看| 亚洲免费福利| 99亚洲精品视频| 菠萝蜜视频在线观看一区| 一级黄色免费网站| 中文字幕亚洲欧美在线| 国产一区二区三区免费观看在线| 黄网站色视频免费观看| 91免费看视频| 在线观看免费视频一区| 欧美多人乱p欧美4p久久| 欧美黄色网视频| 亚洲综合欧美激情| 一区二区不卡在线播放 | 国产精品超碰97尤物18| 亚洲av综合色区无码一区爱av | 高潮无码精品色欲av午夜福利| 日韩在线一区二区三区免费视频| 日韩三级av高清片| 欧美xxxxx在线视频| 亚洲精品综合在线| 三级做a全过程在线观看| 国产日韩精品视频| 国产情侣久久| 外国一级黄色片| 亚洲区免费影片| 日韩在线观看中文字幕| 成人在线观看黄| 伊人一区二区三区| 黄色av网站在线| 国产激情一区二区三区在线观看| 日韩精品一级中文字幕精品视频免费观看 | 午夜电影久久久| 久久日韩视频| 日本婷婷久久久久久久久一区二区| 国产精品一区二区无线|