日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
Redis被bgsave和bgrewriteaof阻塞的解決方法

Redis 是一個(gè)性能非常高效的內(nèi)存 Key-Value 存儲(chǔ)服務(wù), 同時(shí)它還具有兩個(gè)非常重要的特性: 1. 持久化; 2. Value 數(shù)據(jù)結(jié)構(gòu). 這兩個(gè)特性讓它在不少場(chǎng)景輕松擊敗了 Memcached 和 Casandra 等.

    Redis 的持久化在兩種方式: Snapshotting(快照) 和 Append-only file(aof). 在一個(gè)采用了 aof 模式的 Redis 服務(wù)器上, 當(dāng)執(zhí)行 bgrewriteaof 對(duì) aof 進(jìn)行歸并優(yōu)化時(shí), 出現(xiàn)了 Redis 被阻塞的問(wèn)題, 此時(shí), Redis 無(wú)法提供任何讀取和寫(xiě)入操作.

    按字面理解, bgrewriteaof 是在后臺(tái)進(jìn)行操作, 不應(yīng)該影響 Redis 的正常服務(wù). 原理也確實(shí)是這樣的, Redis 首先 fork 一個(gè)子進(jìn)程, 并在該子進(jìn)程里進(jìn)行歸并和寫(xiě)持久化存儲(chǔ)設(shè)備(如硬盤(pán))的. 按照正常邏輯, 在一臺(tái)多核的機(jī)器上, 即使子進(jìn)程占滿 CPU 和硬盤(pán), 也不應(yīng)該導(dǎo)致 Redis 服務(wù)阻塞啊!

    其實(shí), 問(wèn)題就出在硬盤(pán)上.

    Redis 服務(wù)設(shè)置了 appendfsync everysec, 主進(jìn)程每秒鐘便會(huì)調(diào)用 fsync(), 要求內(nèi)核將數(shù)據(jù)”確實(shí)”寫(xiě)到存儲(chǔ)硬件里. 但由于子進(jìn)程同時(shí)也在寫(xiě)硬盤(pán), 從而導(dǎo)致主進(jìn)程 fsync()/write() 操作被阻塞, 最終導(dǎo)致 Redis 主進(jìn)程阻塞了.

    解決方法便是設(shè)置 no-appendfsync-on-rewrite yes, 在子進(jìn)程處理和寫(xiě)硬盤(pán)時(shí), 主進(jìn)程不調(diào)用 fsync() 操作. 注意, 即使進(jìn)程不調(diào)用 fsync(), 系統(tǒng)內(nèi)核也會(huì)根據(jù)自己的算法在適當(dāng)?shù)臅r(shí)機(jī)將數(shù)據(jù)寫(xiě)到硬盤(pán)(Linux 默認(rèn)最長(zhǎng)不超過(guò) 30 秒).


本文題目:Redis被bgsave和bgrewriteaof阻塞的解決方法
分享路徑:http://www.5511xx.com/article/djosdes.html