zoukankan      html  css  js  c++  java
  • Redis性能调优:保存SNAPSHOT对性能的影响

    前一段时间。开发环境反馈,Redisserver訪问很慢,每一个请求要数秒时间,重新启动之后2~3天又会这样。

    我查看了一下Linux的性能,没有什么问题。

    通过

    # redis-cli --latency

    发现訪问Redis确实非常慢,运行info要几秒时间。里面有个參数已连接的client几万个,通过

    Redis>client list

    查看到非常多client的age都非常大,一直没有释放。于是怀疑是不是和这个有关。由于版本号是2.8.6,无法通过client一次性kill掉全部的连接,仅仅能写一个程序,一个一个地kill掉(

    CLIENT KILL addr:port)。但问题依旧存在。

    于是进一步查看配置文件,发现SHNAPSHOT是默认打开状态。

     save 900 1

     save 300 10

     save 60 10000

    由于我们缓存是用于Session保存,不推荐快照保存。特别是在Redis是VM机器上,对总体的性能影响会非常大。于是參考我们的手冊凝视:

    ################################ 快照 #################################

    # 保存数据到磁盘,格式例如以下:

    #  save <seconds> <changes>

    #   指出在多长时间内,有多少次更新操作。就将数据同步到数据文件rdb

    #   相当于条件触发抓取快照,这个能够多个条件配合

    #   比方默认配置文件里的设置,就设置了三个条件

    #  save 900 1  900秒内至少有1key被改变

    #  save 300 10  300秒内至少有300key被改变

    #  save 60 10000  60秒内至少有10000key被改变

    # Session缓存server不使用快照,都凝视

    # save 900 1

    # save 300 10

    # save 60 10000

    重新启动Redis之后。观察了一个月时间。再没有反馈到性能问题了。

    另外在没有使用client的PUB/SUB的情况下,建议參考以下的參数。设置client的连接超时,在300毫秒后,假设不用,服务端会自己主动关闭连接,释放资源。默认是关闭的。


    # 设置client连接时的超时时间,单位为秒。

    当client在这段时间内没有发出不论什么指令。那么关闭该连接

    # 0是关闭此设置

    # 推荐5分钟。

    timeout 300

    # TCP keepalive

    # Linux上,指定值(秒)用于发送ACKs的时间。注意关闭连接须要双倍的时间。

    默觉得0

    # 推荐60

    tcp-keepalive 60

    注:

    Redis 2.8.12已经能够通过client类型,一次性kill到全部相关的连接。
    


  • 相关阅读:
    【Qt开发】 V4L2_CAP_VIDEO_OVERLAY与V4L2_CAP_VIDEO_CAPTURE的区别
    【Qt开发】QThread 实用技巧、误区----但文档中没有提到
    【Qt开发】QThread 实用技巧、误区----但文档中没有提到
    【Qt开发】事件循环与线程 二
    【Qt开发】事件循环与线程 二
    【Qt开发】事件循环与线程 一
    【Qt开发】事件循环与线程 一
    【Qt开发】QThread介绍
    【Qt开发】QThread介绍
    【Linux开发】如何查看Linux kernel的内置模块驱动列表和进程ID
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5173677.html
Copyright © 2011-2022 走看看