成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

redis過期key未刪除故障處理

IT那活兒 / 3318人閱讀
redis過期key未刪除故障處理
redis簡介


Redis(RemoteDictionary Server ),即遠(yuǎn)程字典服務(wù),是一個(gè)開源的使用ANSIC語言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫,并提供多種語言的API。


redis是一個(gè)key-value存儲系統(tǒng),支持存儲的value類型包括string(字符串)、list(鏈表)、set(集合)、zset(sortedset--有序集合)和hash(哈希類型)。這些數(shù)據(jù)類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎(chǔ)上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數(shù)據(jù)都是緩存在內(nèi)存中。區(qū)別的是redis會周期性的把更新的數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎(chǔ)上實(shí)現(xiàn)了master-slave(主從)同步。


業(yè)務(wù)場景


redis


組件版本

redis:5.0.3


節(jié)點(diǎn)架構(gòu):

3主3從、6主機(jī)


1. 問題描述


某業(yè)務(wù)系統(tǒng)采用rediscluster架構(gòu),一批業(yè)務(wù)數(shù)據(jù)采用string類型設(shè)置過期時(shí)間key,業(yè)務(wù)部分過期key未刪除,在redis集群里查找該key存在產(chǎn)生數(shù)據(jù)錯誤的故障。


2. 結(jié)構(gòu)及詳細(xì)說明


Redis集群大致架構(gòu)圖:

一組RedisCluster是由多個(gè)Redis實(shí)例組成,官方推薦使用6實(shí)例,其中3個(gè)為主節(jié)點(diǎn),3個(gè)為從結(jié)點(diǎn)。一旦有主節(jié)點(diǎn)發(fā)生故障的時(shí)候,RedisCluster可以選舉出對應(yīng)的從結(jié)點(diǎn)成為新的主節(jié)點(diǎn),繼續(xù)對外服務(wù),從而保證服務(wù)的高可用性。


對于客戶端來說,如何知道對應(yīng)key是要路由到哪一個(gè)節(jié)點(diǎn)的那?這里RedisCluster把所有的數(shù)據(jù)劃分為16384個(gè)不同的槽位,可以根據(jù)機(jī)器的性能把不同的槽位分配給不同的Redis實(shí)例,對于Redis實(shí)例來說,他們只會存儲部門的Redis數(shù)據(jù),當(dāng)然,槽的數(shù)據(jù)是可以遷移的,不同的實(shí)例之間,可以通過一定的協(xié)議,進(jìn)行數(shù)據(jù)遷移。



3. 問題定位


通過對提供的部分key在集群里查看狀態(tài)為未刪除,然后查看了業(yè)務(wù)設(shè)置過期時(shí)間的代碼看無問題,如下:


通過對redis集群狀態(tài)檢查、槽數(shù)量、epoch等檢查,redis集群狀態(tài)正常,如下:


軟件層檢查后,再對主機(jī)linux層檢查內(nèi)存出現(xiàn)異常主要在swap層,趨勢圖如下:

swap快速增長

可判斷由于業(yè)務(wù)數(shù)據(jù)量增長導(dǎo)致內(nèi)存、swap增長,由于部分?jǐn)?shù)據(jù)進(jìn)入swap后導(dǎo)致部分key過期后未刪除


4. 解決過程


從問題定位來看,解決方法有幾種:

  1. 擴(kuò)容內(nèi)存使數(shù)據(jù)不占用swap并重啟redis集群。


  2. 判斷數(shù)據(jù)的重要性,可關(guān)閉redis本身的持久化,避免持久化過程中占用內(nèi)存,進(jìn)而占用swap。


  3. 擴(kuò)容節(jié)點(diǎn)及增加主機(jī)、增加主節(jié)點(diǎn)來分散數(shù)據(jù)使單個(gè)節(jié)點(diǎn)內(nèi)存占用量減少。


均衡當(dāng)時(shí)的資源情況及數(shù)據(jù)重要性,決定采取第一種方法擴(kuò)容內(nèi)存6臺主機(jī)從48G擴(kuò)容到64G。


通過擴(kuò)容內(nèi)存后結(jié)合業(yè)務(wù)進(jìn)行幾天的觀察后swap得到有效得控制,swap趨勢圖如下:


后續(xù)業(yè)務(wù)未發(fā)生過期key未刪除的情況


   總   結(jié)
   


1、redis如果占用了swap,可能會導(dǎo)致各種問題(如之前過期key未刪除等),建議在搭建環(huán)境時(shí)盡量統(tǒng)計(jì)業(yè)務(wù)數(shù)據(jù)量根據(jù)數(shù)據(jù)量來設(shè)置內(nèi)存大小、并安裝linux系統(tǒng)時(shí)關(guān)閉swap。


2、由于該redis開了持久化,在持久化過程中會占用當(dāng)前主機(jī)內(nèi)存,所以建議在開啟持久化的時(shí)候建議主機(jī)內(nèi)存的大小是redismaxmemory大小的的2倍以上。


3、redis集群一般建議多主機(jī)多節(jié)點(diǎn),單節(jié)點(diǎn)內(nèi)存不超過maxmemory20G。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/130186.html

相關(guān)文章

  • Redis學(xué)習(xí)

    摘要:單線程執(zhí)行命令。文件描述符事件。內(nèi)部原因不合理使用或數(shù)據(jù)結(jié)構(gòu)可能由此導(dǎo)致慢查詢等飽和是單線程,只會使用單個(gè)持久化阻塞操作產(chǎn)生阻塞,對硬盤的操作產(chǎn)生阻塞或?qū)懖僮髯枞?。?nèi)存達(dá)到時(shí)執(zhí)行內(nèi)存溢出控制策略。 最近在看《Redis開發(fā)與運(yùn)維》,把自己學(xué)會的知識點(diǎn)記錄下來,畢竟好記性不如爛筆頭。 一.Redis是什么。 Redis是一個(gè)Key-Value的NoSQL數(shù)據(jù)庫. 二.Redis的特點(diǎn)。...

    miguel.jiang 評論0 收藏0

發(fā)表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<