亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

redis過(guò)期key未刪除故障處理

IT那活兒 / 3408人閱讀
redis過(guò)期key未刪除故障處理
redis簡(jiǎn)介


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


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


業(yè)務(wù)場(chǎng)景


redis


組件版本

redis:5.0.3


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

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


1. 問(wèn)題描述


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


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


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可以選舉出對(duì)應(yīng)的從結(jié)點(diǎn)成為新的主節(jié)點(diǎn),繼續(xù)對(duì)外服務(wù),從而保證服務(wù)的高可用性。


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



3. 問(wèn)題定位


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


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


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

swap快速增長(zhǎng)

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


4. 解決過(guò)程


從問(wèn)題定位來(lái)看,解決方法有幾種:

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


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


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


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


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


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


   總   結(jié)
   


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


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


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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/130186.html

相關(guān)文章

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

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

    miguel.jiang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<