client-output-buffer-limit pubsub
如果客戶端訂閱了某些頻道,但是產(chǎn)生消息的速度大于消費(fèi)的速度,積壓的消息導(dǎo)致Redis的輸出緩沖區(qū)越來(lái)越大,這會(huì)導(dǎo)致Redis的速度變慢甚至崩潰,也可能導(dǎo)致Redis被操作系統(tǒng)強(qiáng)制殺死,甚至操作系統(tǒng)本身不可用。
新的Redis(大概是在2.6以后的版本加入的)通過(guò)client-output-buffer-limit的參數(shù)來(lái)避免這種情況的出現(xiàn),不同類型的客戶端有不同的限制參數(shù)。目前支持3種客戶端,分別是:
1.normal => normal clients;
2.slave clients and MONITOR clients;
3.pubsub => clients subcribed to at least one pubsub channel or pattern
限制方式有如下兩種:1.大小限制,當(dāng)某一個(gè)客戶端的緩沖區(qū)超過(guò)某一個(gè)大小值時(shí),直接關(guān)閉這個(gè)客戶端的連接;2.持續(xù)性限制,當(dāng)某一個(gè)客戶端的緩沖區(qū)持續(xù)一段時(shí)間占用過(guò)大空間時(shí),會(huì)直接關(guān)閉客戶端連接。
這個(gè)參數(shù)在redis.conf文件中可以修改。
client-output-buffer-limit normal 0 0 0client-output-buffer-limit slave 256mb 64mb 60client-output-buffer-limit pubsub 8mb 2mb 60
對(duì)于普通客戶端來(lái)說(shuō),限制為0,也就是不限制。因?yàn)槠胀蛻舳送ǔ2捎米枞降南?yīng)答模式,何謂阻塞式呢?如:發(fā)送請(qǐng)求,等待返回,再發(fā)送請(qǐng)求,再等待返回。這種模式下,通常不會(huì)導(dǎo)致Redis服務(wù)器輸出緩沖區(qū)的堆積膨脹;對(duì)于slave客戶端來(lái)說(shuō),大小限制是128M,持續(xù)性限制是當(dāng)客戶端緩沖區(qū)大小持續(xù)60秒超過(guò)64M,則關(guān)閉客戶端連接。對(duì)于Pub/Sub客戶端(也就是發(fā)布/訂閱模式),大小限制是8M,當(dāng)輸出緩沖區(qū)超過(guò)8M時(shí),會(huì)關(guān)閉連接。持續(xù)性限制是,當(dāng)客戶端緩沖區(qū)大小持續(xù)60秒超過(guò)2M,則關(guān)閉客戶端連接;
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注