redis主從復制(4)— client buffer

1、 client buffer的設計

redis server以單進程的方式處理接收到的請求,而redis完成請求有些工作比較慢,比如網絡IO和磁盤IO等比較慢的操作。redis為了提高處理客戶端請求的響應時間,做了很多優化。比如網絡io和磁盤io是異步完成、使用后臺進程完成bgsave和bgrewriteaof工作,在server端為客戶提供讀buffer等等。

client buffer是在server端實現的一個讀取緩沖區。redis server在接收到客戶端的請求后,把影響結果寫入到client buffer中,而不是直接發送給客戶端。server把結果寫入到client buffer中后,繼續處理客戶端的其他請求。這樣異步處理方式使redis server不會因為網絡原因阻塞其他請求的處理。之前的文章中replication buffer也是client buffer中的一種。

2、client buffer參數設置

redis client buffer的配置參數為”client-output-buffer-limit”,默認值為:

127.0.0.1:6379> CONFIG GET "*output*"
 
    1) "client-output-buffer-limit"
 
    2) "normal 0 0 0 slave 0 0 0 pubsub 0 0 0"

參數設置方法如下:

client-output-buffer-limit <class> <hard limit> <soft limit> <soft seconds>

具體參數含義如下:

class : 客戶端種類,normal、slave、pubsub。

– mormal:普通的客戶端

– slave: 從庫的復制客戶端

– pub/sub: 發布與訂閱的客戶端的

hard limit: 緩沖區大小的硬性限制。

soft limit: 緩沖去大小的軟性限制。

soft seconds: 緩沖區大小達到了(超過)soft limit值的持續時間。

client-output-buffer-limit參數限制分配的緩沖區的大小,防止內存無節制的分配。參數的默認值都為0,意思是不做任何限制。

3、client buffer保護機制

redis server觸發保護機制主要有兩種情況:

1) client buffer的大小達到了soft limit并持續了soft seconds時間,將立即斷開和客戶端的連接。

2) client buffer的大小達到了hard limit,server也會立即斷開和客戶端的連接。

slave replication buffer這里不再討論,而是討論普通客戶端的client buffer。

思考問題:是否要設置client-output-buffer-limit normal參數(默認參數不做任何限制),如何設置?

1)client-output-buffer-limit參數一定要設置,不能使用默認的參數,防患于未然。client buffer實際上是占用redis的數據內存空間(unlike replication buffers, memory allocation for client buffers is taken from Redis’ data memory space.)。redis的最大數據內存空間由maxmemory參數限定。當數據內存空間達到maxmemory參數限定值時,redis會開始evict數據,或者直接提示客戶端OOM(out of memory)。

這種情況下主要發生在客戶端執行大批量數據讀取, 比如keys *、smembers、lrange、hgetall等操作。
如果單次查詢的數據太多,導致redis的used memory增長一倍。

2)client-output-buffer-limit也不能設置太小,這個會導致客戶端讀取不到數據。

這篇文章包含了top redis headaches for devops – client buffers里面的一些內容,而不是簡答的翻譯。

轉自:http://mdba.cn/?p=833

原創文章,作者:s19930811,如若轉載,請注明出處:http://www.www58058.com/2486

(0)
s19930811s19930811
上一篇 2016-03-28 23:18
下一篇 2016-03-28 23:19

相關推薦

  • 學習宣言

    不積跬步無以至千里,不積小流無以成江海。 在Linux的世界,我還只是一個頑童,我會通過我的努力證明,我可以攀登峻峰,笑看風云!

    Linux干貨 2016-12-28
  • 關于大型網站技術演進的思考(十一)–網站靜態化處理—動靜分離策略(3)

    原文出處: 夏天的森林   前文里我講到了網站靜態化的關鍵點是動靜分離,動靜分離是讓動態網站里的動態網頁根據一定規則把不變的資源和經常變的資源區分開來,動靜資源做好了拆分以后,我們就可以根據靜態資源的特點將其做緩存操作,這就是網站靜態化處理的核心思路。由此可見,網站靜態化處理的核心就是動靜分離和緩存兩大方面,上篇我簡單講述了動靜…

    Linux干貨 2015-03-11
  • 馬哥教育網絡20期第七周課程練習

    1、創建一個10G分區,并格式為ext4文件系統; (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl; fdisk /dev/sdb ; mke2fs -t ext4 -b 2048 -L MYDATA -m 2 –O acl /dev/sdb1 (2) 掛載至/data/mydata目錄,要求掛載…

    Linux干貨 2016-08-15
  • linux的文件類型

    linux的文件類型 linux其中的一個哲學思想就是一切皆文件,今天我們就來學習一下linux系統中的文件類型。linux不同于windows,有多種多類的文件類型,文件類型的判斷也不是以文件的后綴為標準的。linux中一共有七種文件類型,分別是:普通文件、目錄、字符設備文件、塊設備文件、套接字文件、命名管道文件和符號鏈接文件。那么接下來我們就分別看看每種…

    Linux干貨 2016-10-27
  • 20160803作業-用戶組和權限管理

    http://note.youdao.com/yws/public/redirect/share?id=46f06331b737c6d08a0e8c9c3d49ac9e&type=false

    Linux干貨 2016-08-08
  • N21沉舟17周作業

    1、結合圖形描述LVS的工作原理; NAT模型 NAT模型其實就是通過網絡地址轉換來實現負載均衡的,它的工作方式幾乎跟iptables 中的DNAT一模一樣的,NAT模型的工作方式: 1.用戶請求VIP(也就是是CIP請求VIP) 2,Director Server 收到用戶的請求后,發現源地址為CIP請求的目標地址為VIP,那么Dorector Serve…

    Linux干貨 2016-11-14
欧美性久久久久