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
下一篇 2016-03-28

相關推薦

  • linux基礎練習

    馬哥教育23期網絡班+第6周課堂練習 Linux 基礎練習 一、linux基礎練習題 1、復制/etc/rc.d/rc.sysinit 文件至/tmp 目錄,將/tmp/rc.sysinit 文件中的以至少一個空白字符開頭的行的行首加#; 2、復制/boot/grub/grub.conf 至/tmp目錄中 刪除/tmp/grub.conf 文件中的行首的空白…

    Linux干貨 2016-11-01
  • Centos 7 之systemd

    Centos 7 之systemd systemd POST –> Boot Sequence –> Bootloader –> kernel + initramfs(initrd) –> rootfs –> /sbin/init init: CentOS 5: Sys…

    Linux干貨 2016-09-23
  • Linux學習第四周

    一.Linux文件查找  本章介紹的有locate和find的命令的使用以及壓縮解壓縮工具 1.文件查找,跟以前我們所學的grep fgrep egrep 類似,grep屬于文本過濾,搜索工具 然而文件查找就find和locate 他們有一點區別: find :實時查找進行文件匹配,由于進行路徑匹配所以查找速度略慢,     &…

    2017-06-11
  • 系統日志和loganalyzer

    作為運維人員,熟悉系統日志是一項基本功。本文將介紹centos6的系統日志rsyslog及loganalyzer工具。 簡介 系統日志:記錄歷史事件,通常都是按時間順序將發生的事件予以記錄,linux上的日志分為syslogd(系統進程相關日志)和klogd(內核事件日志) centos5:syslog    缺點:不能進行并行數據存儲,…

    Linux干貨 2016-03-20
  • find、locate、Gnome文件查找工具

    查找命令: ? ? ? ? locate:非實時查找 ? ? ? ? find:實時查找 ? ? ? ? Gnome:圖形化搜索工具 locate: 描述:查詢系統上預建的文件索引數據庫/var/lib/mlocate/mlocate.db,一天更新一次更新數據庫:updatedb特點:依賴于事先構建的索引。索引的構建是在系統較為空閑時自動進行(周期性任務)…

    Linux干貨 2017-11-26
  • 第十四周作業

    系統的INPUT和OUTPUT默認策略為DROP; 1、限制本地主機的web服務器在周一不允許訪問;新請求的速率不能超過100個每秒;web服務器包含了admin字符串的頁面不允許訪問;web服務器僅允許響應報文離開本機; ]# iptables -P INPUT DROP #INPUT默認策略為DROP ]# iptables -P OUTPUT DROP…

    Linux干貨 2017-04-12
欧美性久久久久