久久久精品2019中文字幕神马_欧美亚洲一区三区_欧美大人香蕉在线_精品88久久久久88久久久_中文字幕一区二区三区在线播放 _精品国产一区二区三区久久影院_欧洲av在线精品_粉嫩av一区二区三区_亚洲欧美一区二区三区极速播放_国产亚洲精品久久

首頁 > 生活

全球微動態丨memcached使用中踩的一些坑

來源:博客園 時間:2023-06-25 10:08:03

背景

線上啟用memcached(以下簡稱mc)作為熱點緩存組件已經多年,其穩定性和性能都經歷住了考驗,這里記錄一下踩過的幾個坑。


(相關資料圖)

大key存儲

某年某月某日,觀察mysql的讀庫CPU占比有些異常偏高,去check慢查詢log,發現部分應有緩存的慢sql居然存在幾秒執行一次情況,不符合緩存數小時的代碼邏輯。查看業務log在每次查詢sql之后也確實有將結果set至mc之中:

# python代碼mc.set(cache_key, v, 3600)

而set返回的取值卻是False而非正常的True,很快想到mc著名的只可存儲不超過1MB大小的key限制,在以往的業務場景中沒有出現過這么大的key,所以一直沒達到過這個限制,直到這一次撞上。要解決超過1MB大小的key存儲問題有以下幾個思路:

想辦法將cache結果變小換個cache組件mc >=1.4.2 版本其實已經支持命令行參數-I指定最大key大小了,線上使用版本支持最小1KB最大128MB的設置將大key拆分為幾個子key,通過set_multi和get_multi實現統一的讀寫。

無論是通過2或3都可以支持更大的key存儲,但是更大的key存儲對于讀寫傳輸其實都更不友好,而思路4需要手動拆分、組裝子key略顯麻煩,所以優先從思路1著手,意外發現python使用的memcached庫其實提供了key壓縮功能,在寫入時指定min_compress_len參數即可:

mc.set(key, v, time=expires, min_compress_len=1024)

如上表示寫入的v對象序列化大小若>=1024則啟用壓縮存儲,庫底層會將其壓縮后再寫入mc,讀取時庫底層也會自動解壓縮后再返回,業務層可以說完全無感,并且壓縮后還能極大降低存儲和傳輸成本。最終通過min_compress_len參數啟用大key壓縮后,原1MB大小的key直瘦身了4/5。

slab鈣化

啟用大key壓縮后mc度過了好一段歲月靜好的日子,直到某一天...

大規模key分布變動導致的鈣化

查看zabbix上的相關監控,發現mc的key查詢miss比例居然接近50%!這個緩存命中率著實讓人深思,進一步check后發現同時異常的指標還有evicted items數,日常取值居然可以達到數百/S的級別。mc官方文檔對evicted items的定義如下:

evicted                Number of times an item had to be evicted from the LRU before it expired.

即存儲的key在其實際過期前被從LRU強制清理了,這一般說明mc剩余可分配內存不足了,所以新key寫入時只能先從LRU淘汰一部分key騰出空間后再給新key使用,但是查看mc的內存使用率,明明還有超過>2GB的剩余內存可用。最終調查后真相大白:mc明明剩余大量內存可用,寫入新key卻不斷導致舊key被提前清除的現象其實是mc特有的slab鈣化問題所致:

Memcached采用LRU(Least Recent Used)淘汰算法,在內存容量滿時踢出過期失效和LRU數據,為新數據騰出內存空間。不過該淘汰算法在內存空間不足以分配新的Slab情況下,這時只會在同一類Slab內部踢出數據。即當某個Slab容量滿,且不能在內存足夠分配新的Slab,只會在相同Slab內部踢出數據,而不會挪用或者踢出其他Slab的數據。這種局部剔除數據的淘汰算法帶來一個問題:Slab鈣化。

簡單來說memcached 使用的不同尺寸slab一旦分配完成就不可變了,所以如果某類slab已用盡,即便其他slab剩余大量空閑內存也無法再對其加以利用。業務這邊之前對使用mc的部分緩存key進行了整合優化,在優化之前單mc的全部5GB內存均已根據key存儲情況分配給了特定的slab,而優化之后大大降低了小key的數量,取而代之的是相對更緊湊的大key,key的數量和大小分布都發生了顯著的變化,于是原有的適用于大量小key的slab分配就無法滿足優化后的key存儲了。最終體現為,中等大小的slab內存已被耗盡,每次寫入新key只能先通過LRU淘汰部分舊key騰出空間,體現為evicted數異常偏高,并且直接影響了緩存命中率,而小尺寸的slab卻長期大量空閑,體現為mc內存使用剩余空間一直充足。網上檢索解決鈣化問題有三個辦法:

1) 重啟Memcached實例,簡單粗暴,啟動后重新分配Slab class,但是如果是單點可能造成大量請求訪問數據庫,出現雪崩現象,沖跨數據庫。2) 隨機過期:過期淘汰策略也支持淘汰其他slab class的數據,twitter工程師采用隨機選擇一個Slab,釋放該Slab的所有緩存數據,然后重新建立一個合適的Slab。3) 通過slab_reassign、slab_authmove參數控制。

方法2看上去應是twitter的定制版mc Twemcache的特有功能,方法3則是線上mc已支持的方案,但首次接觸也不敢貿然直接在線上使用。考慮到mc僅作為熱點緩存其數據可丟失,且部署有多臺分攤壓力,直接采用低峰時段分別重啟單個mc的策略解決,重啟后evicted item直接降為0,cache命中率升至90%上下。

少量大key變動導致的鈣化

首次鈣化之后又是一段歲月靜好,直到...某段時間開始一個主要接口偶發耗時會突然飆升一下,對應機器的CPU使用也會瞬間飚高一小陣,查看zabbix監控時,發現mc的 evicted items>0已持續好一段時間,但一直是個位數/S的級別,看著影響不大。進一步執行stats items命令,發現發生key evict的是最大的chunk_size=1048576 的slab 42,這也就是說存在大小在512KB~1MB之間的大key,同時當前mc分配的1MB slab個數已無法滿足其存儲,也無法再分配出新的1MB大小的slab,最終體現為對于大key的再次鈣化。由于slab鈣化大key會被頻繁evict,對應緩存機制基本失效,所幸server端針對該類大key的讀取還做了一個短期的本地cache,避免了每次請求都穿透到db。在某些特定時刻,當mc中對應大key失效且本地cache失效,對應請求又較多的時候,多個獨立的請求都會穿透到db獲取數據,而后再寫入mc,無論是穿透到db獲取數據后本地進行相應的數據組裝處理邏輯,還是讀寫mc的壓縮、解壓縮數據操作,都比較耗CPU,最終會體現為api耗時增加,且CPU使用率也存在飚高的現象。近期并沒有涉及大key讀寫的改動,那這次的大key slab鈣化又是怎么來的?進一步探查原因:觸發evict的大key近期確實無相關邏輯改動,但該部分舊key的大小和運營放出的資源多少直接相關,近一段時間放出的資源一直持續增加,舊key原本大小是<512KB,所以使用的是512KB的slab 41,近期持續增大為>512KB后,就只能使用1MB的slab 42存儲了,對于slab 42來說相當于在原有支持的大key數量基礎上又新的大key存儲需要支持,又由于slab鈣化無法再分配新的slab 42,最終觸發evict,cache命中率降低,api偶發耗時上升。最終解決方案:還是在業務低峰期逐個重啟mc,觸發slab重分配即可。

總結

memcached作為一個開源的純內存kv緩存組件,上手簡單、性能、穩定性都有足夠保證,但是實際使用時也不可掉以輕心,對其相關監控與關注不能少,對于其特有的最大key存儲限制、slab鈣化問題要有一定的認識并能及時處理。轉載請注明出處,原文地址:https://www.cnblogs.com/AcAc-t/p/memcached_large_key_slab_calcification.html

參考

https://github.com/memcached/memcached/blob/master/doc/protocol.txt#L637https://github.com/memcached/memcached/wiki/ReleaseNotes142#configurable-maximum-item-sizehttps://www.jianshu.com/p/b91a45711460https://blog.twitter.com/engineering/en_us/a/2012/caching-with-twemcachehttps://www.cnblogs.com/AcAc-t/p/memcached_large_key_slab_calcification.htmlhttps://bugwz.com/2020/05/24/memcached-slab-calcification/#2-2-2、Rebalance執行邏輯https://www.cnblogs.com/Leo_wl/p/3310294.html

相關稿件

全球微動態丨memcached使用中踩的一些坑

張本美和打瘋了!連扳3局逆轉世界冠軍,父親坐鎮場外指導女兒

深化科技金融特色 推動“武漢模式”升級——訪漢口銀行董事長陳新民

好客山東丨五年來“最火熱”端午山東數據亮眼 重點景區接待游客419.8萬人次

視點!1.06億人次出游、收入373.10億元!端午旅游趕超疫情前 業者期待暑期游

焦點短訊!600993股票行情行情首頁 600990股票行情

豪宅逆市熱銷,揭秘富人買房邏輯|世界今亮點

為小份菜再添一把火 焦點資訊

晚上最好的晚禱_禱告范文

每日速讀!商務部:端午假期消費市場持續升溫 消費潛力有效釋放

龍舟揮槳,競渡維港

最資訊丨蘭州新區舉辦客運行業職工職業技能大賽

世界今日訊!鄭東新區白沙鎮:輕松一拍,“智慧城市管理”不再是難題

【厚植高質量發展沃土——大力開展優化營商環境攻堅突破年行動】清水 環境有溫度 項目加速度

"正經與色心并存!揭示四大生肖中外表正經私底下色香味俱全的情色達人!"|環球熱點

祝幸福?拉波爾特與女友舉行婚禮,哈蘭德&羅德里等人參加_世界快報

若哈特執行1290萬球員選項 尼克斯可提供四年8100萬續約報價

裳多音字組詞 裳多音字組詞有哪些

焦點熱訊:2023胡潤中國新能源產業集聚度城市榜發布

±500千伏葛南直流完成全面改造后正式投運

環球百事通!生肖蛇7月17日起行大運發大財,事業順心,喜事連連!

海博思創啟動科創板IPO!儲能系統業務年復合增長率219.27%! 焦點快看

“月入過萬”?同學,這樣的“兼職”做不得!

認真聊一下,恒大北極星的5個領取方案

新動態:提質效,優服務!馬巒街道推動黨群服務更利民便民

今日最新!新疆和田地區皮山縣發生3.3級地震

女生考前3天連續失眠 一查684分落淚:激動到不行 網友祝賀

西康指揮部組織西康高鐵4標項目開展防洪防汛應急演練

寶武澳大利亞西坡項目在澳大利亞珀斯開業

我國南方16條河流發生超警洪水


久久久精品2019中文字幕神马_欧美亚洲一区三区_欧美大人香蕉在线_精品88久久久久88久久久_中文字幕一区二区三区在线播放 _精品国产一区二区三区久久影院_欧洲av在线精品_粉嫩av一区二区三区_亚洲欧美一区二区三区极速播放_国产亚洲精品久久
日本韩国欧美一区二区三区| 99久久国产综合精品色伊| 日韩欧美国产一区二区三区 | 中文字幕精品综合| 欧美性大战久久| 国产福利视频一区二区三区| 亚洲综合色婷婷| 亚洲精品高清视频在线观看| 国产欧美日韩在线观看| 欧美日韩亚洲综合| 7878成人国产在线观看| 日韩三级视频在线看| 欧美一级二级三级蜜桃| 欧美精品在线观看一区二区| 欧美日韩国产免费| 一本大道久久a久久综合| av不卡免费在线观看| 成人福利视频在线看| 成人丝袜视频网| 91免费国产在线观看| 裸体歌舞表演一区二区| 成人av免费观看| 69堂精品视频| 中文成人综合网| 日韩毛片视频在线看| 亚洲自拍欧美精品| 亚洲r级在线视频| 精品无人区卡一卡二卡三乱码免费卡 | 日韩一区二区三区av| 久久精品视频一区二区| 久久精品视频免费| 亚洲午夜久久久| 粉嫩在线一区二区三区视频| 色香蕉久久蜜桃| 久久午夜羞羞影院免费观看| 亚洲成av人片| www.视频一区| 高清不卡一区二区| 国产精品久久看| 国产mv日韩mv欧美| 精品国产网站在线观看| 亚洲韩国一区二区三区| 不卡av在线免费观看| 日韩欧美国产成人一区二区| 欧美不卡视频一区| 激情丁香综合五月| 精品欧美一区二区三区精品久久 | 91精品国产欧美日韩| 国产精品久久久久婷婷| av中文字幕亚洲| 久久综合资源网| 成人激情校园春色| 亚洲欧美国产77777| 欧美综合天天夜夜久久| 婷婷激情综合网| 日韩精品一区二区三区四区视频 | 久久午夜免费电影| 国产在线精品国自产拍免费| 久久只精品国产| 成人性生交大片免费看在线播放| 婷婷久久综合九色综合伊人色| 1区2区3区国产精品| 91丝袜美女网| 69堂精品视频| 精品少妇一区二区| 中文在线一区二区| 亚洲免费在线视频一区 二区| 亚洲国产综合在线| 亚洲高清免费观看高清完整版在线观看 | 99久久精品免费看| 欧美日韩精品一区视频| 日韩欧美国产综合一区| 国产精品久久久久一区二区三区 | 一区二区三区在线观看欧美| 丝袜美腿成人在线| 成人黄色网址在线观看| 九一久久久久久| 日本精品视频一区二区| www一区二区| 一区二区三区 在线观看视频| 久久精品国产一区二区三区免费看| 国产成a人亚洲精品| 欧美日本一道本| 欧美一区二区福利在线| 亚洲一区影音先锋| 国产乱对白刺激视频不卡| 欧美三级电影在线看| 国产欧美视频一区二区三区| 亚洲一区中文在线| 欧洲亚洲国产日韩| 一区二区三区四区精品在线视频| 国产成人精品免费在线| 久久美女艺术照精彩视频福利播放| 有坂深雪av一区二区精品| 粉嫩久久99精品久久久久久夜| 欧美一级一级性生活免费录像| 婷婷一区二区三区| 欧美一区午夜精品| 美女视频网站久久| 精品国产自在久精品国产| 欧美a级理论片| 久久久久综合网| 9l国产精品久久久久麻豆| 亚洲午夜三级在线| 欧美精品日韩一区| 久久99精品久久久久久国产越南| 3d成人h动漫网站入口| 日韩av高清在线观看| 日韩精品综合一本久道在线视频| 国产一区视频导航| 一区二区三区欧美在线观看| 日韩免费性生活视频播放| 国产精品99久久久| 一区二区激情视频| 美女一区二区三区在线观看| 久久精品一区八戒影视| 久久99久久久久久久久久久| 久久蜜桃一区二区| 欧美日韩一级二级三级| 成人av片在线观看| 国产福利一区在线观看| 丝袜美腿一区二区三区| 国产精品国产三级国产| 日韩精品一区二区在线观看| 欧美日韩高清影院| 亚洲免费观看高清完整| 久久久久久久久久久电影| 日韩一级二级三级| 美女视频网站久久| 中文字幕欧美区| 日本韩国精品在线| 北条麻妃一区二区三区| 狠狠狠色丁香婷婷综合久久五月| 日韩精品一二三四| 性感美女极品91精品| 亚洲国产日韩综合久久精品| 国产精品久久久久国产精品日日| 日韩成人av影视| 天天综合网 天天综合色| 9久草视频在线视频精品| 97精品国产97久久久久久久久久久久| 韩国欧美一区二区| 丝袜诱惑制服诱惑色一区在线观看 | 久久日一线二线三线suv| 精品日本一线二线三线不卡| 精品日韩欧美在线| 国产嫩草影院久久久久| 国产精品欧美一区二区三区| 欧美成人三级在线| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 91精品在线免费观看| 精品少妇一区二区三区在线视频| 91精品黄色片免费大全| 久久久99精品免费观看不卡| 亚洲欧洲中文日韩久久av乱码| 亚洲成人在线免费| 亚洲第一综合色| 国产成人一级电影| 精品伦理精品一区| 性欧美疯狂xxxxbbbb| 成人午夜激情影院| 韩国三级中文字幕hd久久精品| 韩国女主播一区| 欧美日韩国产成人在线免费| 欧美激情在线一区二区| 日本午夜精品视频在线观看| 国产一区在线观看视频| 欧美午夜精品电影| 亚洲精品一二三| 波多野结衣视频一区| 国产精品女上位| 成人蜜臀av电影| 欧美日韩美女一区二区| 久久精品国产精品青草| 日韩欧美色综合| 国内成+人亚洲+欧美+综合在线| 91麻豆精品国产91久久久久久久久 | 91精品一区二区三区在线观看| 亚洲精品视频在线| 色综合天天综合| 亚洲成人动漫av| 国产精品99久久久久久似苏梦涵| 亚洲麻豆国产自偷在线| 欧美三级三级三级| 久久av老司机精品网站导航| 久久女同精品一区二区| 国内精品伊人久久久久影院对白| 欧美专区日韩专区| 亚洲国产精品久久不卡毛片| 欧美高清视频一二三区| 国产毛片精品国产一区二区三区| 欧美性视频一区二区三区| 精品福利一二区| 91老司机福利 在线| 欧美大度的电影原声| 久久麻豆一区二区| 国产传媒欧美日韩成人| 国产精品乱码妇女bbbb| 精品国产露脸精彩对白| 国产片一区二区三区|