首页> 数据库> Redis> 正文

Redis运维之缓冲区

齐天大圣
发布: 2020-05-21 11:21:01
原创
108 人浏览过

可能很多开发者都认为Redis很简单,掌握些api不就可以了么。事实上,如果使用不当,会出现很多问题的。今天,就来说说redis的缓冲。Redis给客户端提供了输入缓冲区与输出缓冲区,并且提供了相应的api来查看监控缓冲区。

输入缓冲区

Redis为每个客户端都提供了输入缓冲区,它的作用是将客户端发来的命令保存,然后Redis会从输入缓冲区中提取命令并执行。

Redis为客户端提供的输入缓冲区大小是有限制的,不能超过1G内存,超过的话Redis将关闭该客户端。

缓冲区溢出的危害

每个客户端的输入缓冲区最大不能超过1G,超过的话,该客户端将会被关闭,将会造成应用出问题。

输入缓冲区不能大小不受maxmory控制,当maxmory设置为8G时,当Redis已存储了4G数据,而所有客户端的输入缓冲区总大小为5G时,将可能造成数据丢失,键值淘汰,OOM等情况。

缓冲区溢出的原因,是因为redis的处理速度赶不上缓冲区的输入速度。常见的情况是,输入缓冲区内含有大量bigkey或redis发生了阻塞。

监控

监控输入缓冲区有两种方法

  • 第一种方法是通过client list命令来查看目前所有连接的客户端信息

  • 第二种方法是通过info clients命令查看总体的信息。

127.0.0.1:6379> client list id=113430 addr=127.0.0.1:57244 fd=7 name= age=3115 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=26 qbuf-free=32742 obl=0 oll=0 omem=0 events=r cmd=client id=113432 addr=127.0.0.1:57250 fd=9 name= age=3099 idle=342 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=set ……
登录后复制

其中,和输入缓冲区有关的是qbuf、qbuf-free,他们分别表示输入缓冲区的大小和剩余的输入缓冲区的大小。

127.0.0.1:6379> info clients # Clients connected_clients:4 client_recent_max_input_buffer:2 client_recent_max_output_buffer:0 blocked_clients:0
登录后复制

client_recent_max_input_buffer表示最大的输入缓冲区的大小。

这两种方法有自己的优缺点:

  • client list可以精确监控每个客户端情况,但执行速度较慢,有可能造成redis阻塞。

  • info clients 执行快,但分析的数据较简单,不能精确到每个客户端,且不能显示总的客户端输入缓冲区大小,只显示最大的。

输出缓冲区

Redis也提供了输出缓冲区,和输入缓冲区一样,输出缓冲区也不受maxmory控制。

但和输入缓冲区不一样的是,输出缓冲区可以通过配置文件来限制。

client-output-buffer-limit type hardlimit softlimit secords

  • type表示客户端类型

  • hardlimit 输出缓冲区最大值,超过的话会立即关闭

  • sortlimit 及secords 当超过sortlimit限制secords秒后,客户端会被关闭。

Redis默认配置如下:

client-output-buffer-limit normal 0 0 0 client-output-buffer-limit replica 256mb 64mb 60 client-output-buffer-limit pubsub 32mb 8mb 60
登录后复制

监控

和输出缓冲区监控的办法一样,也会使用client list及info clients。

client list中和输出缓冲相关的是obl、oll、omem,主要看omem,它表示输出缓冲区的大小。

info clients中client_recent_max_output_buffer表示最大的输出缓冲区大小。

他们的优缺点和之前所说一样,这里就不赘述。

另外这里再介绍一个命令,用来关闭客户端的连接。

client kill ip:端口

当发现客户端异常时,就可以使用该命令来关闭异常的连接。

以上是Redis运维之缓冲区的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
1
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!