php ouput buffer,Redis配置详解-客户端缓冲区 output buffer
客戶端緩沖區 output buffer
大概已經知道Redis是一個內存數據庫,這意味著所有的數據都由RAM直接管理和提供的。因此Redis有著卓越的交付性能,Redis可以以亞毫秒級的延遲處理幾萬、幾十萬的請求。
Redis,如同它的名字和設計,是一個移動服務器,客戶端(通常)通過網絡連接Redis。這種情況下,客戶端請求返回客戶端的時間將顯著長于Redis CPU從RAM讀取數據的時間。這意味著如果沒有客戶端緩沖區的話,Redis的主要差異與在該段時間對服務的響應有關。
客戶端緩沖區組成了服務客戶請求所需的內存空間,Redis的每個連接都配有自己的緩沖區空間。處理請求后,Redis把響應數據復制到客戶端緩沖區,然后繼續處理下一個請求,與此同時,請求客戶端通過網絡連接讀取數據。Redis客戶端緩沖區配置在redis.conf文件:
config?get?client-output-buffer-limit
1)?"client-output-buffer-limit"
2)?"normal?0?0?0?slave?268435456?67108864?60?pubsub?33554432?8388608?60"
output buffer是Redis為client分配的緩沖區(這里的"client"可能是真正的client,也可能是slave或monitor),若為某個客戶端分配的output buffer超過了預留大小,Redis可能會根據配置策略關閉與該端的連接。
例如,若Redis被用作message queue,訂購消息的consumer處理速度跟不上發布消息的producer時,就會發生對應的output buffer超限的情況。
該配置項格式如下:
client-output-buffer-limit
:目前支持3種客戶端:
1) normal => normal clients;
2) slave clients and MONITOR clients;
3) pubsub => clients subcribed to at least one pubsub channel or pattern
:若output buffer大小超過該值,Redis會立即關閉與對應client的連接
:若output buffer大小超過soft limit且這種情況的持續時間超過soft seconds,則Redis會關閉與對應client的連接。
默認的配置如下:
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
這些數值分別代表緩沖區軟限制,硬限制和以秒為單位的超時(類似于復制緩沖區)。當Redis終止連接時,這些值提供保護——不需要客戶讀取回復——當緩沖區尺寸達到a)軟限制并且保持狀態直到超時b)硬限制。將這些數值都設為0意味著關閉保護。
不過,和復制緩沖區不同的是客戶端緩沖區來自Redis數據內存空間。可以通過maxmemory指令設置Redis的總內存值,達到極限后,Redis將應用其配置的驅逐策略(由maxmemory-policy 指令定義)。因此,低性能的客戶或大量的同時連接可能會因為數據集尺寸和客戶端緩沖區達到內存限制導致Redis實例過早的驅逐鍵或禁止更新。
由于生命周期的相對性,一個客戶端不需要降低性能就可能導致這種現象。因為RAM讀取和網絡讀取存在著很大的速度差異,過多的客戶端緩沖區很可能耗盡Redis內存,即使是在高性能的客戶端和網絡連接中。例如,考慮下(萬惡的)KEYS指令,這個指令觸發后,Redis將會把整個鍵的名空間拷貝給客戶端緩沖區。如果我們的數據庫有很多鍵,這很可能導致驅逐。
Redis主從配置
主要是針對單點的,全局的redis進行主從配置,并用aof方式進行增量更新請求數據
在主的redis配置的最后,redis.conf 添加
include /data/redis/6379/instance.conf
然后在平級的instance.conf 中的內容
appendonly yes ? --默認會生成appendonly.aof 存儲數據
maxclients 180000
save ""
在從的redis配置的最后,redis.conf 添加
include /data/redis/6379/instance.conf
然后在平級的instance.conf 中的內容
appendonly yes??--默認會生成appendonly.aof 存儲數據
save ""
slaveof 10.104.5.98 6379 ? ---該地址就是主的地址
總結
以上是生活随笔為你收集整理的php ouput buffer,Redis配置详解-客户端缓冲区 output buffer的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sqlserver可视化工具_数据分析之
- 下一篇: python数据科学实践 常象宇_Pyt