【第四章 客户端】4.4、客户端管理

in with 0 comment

客户端管理

Redis提供了客户端相关 API对其状态进行监控和管理,本节将深入介绍各个API的使 用方法以及开发运维中可能遇到的问题。

  1. 客户端API
  1. 客户端相关配置

    此处将对剩余配置进行介绍:

    • timeout:检测客户端空闲连接的超时时间,一旦idle时间达到了timeout, 客户端将会被关闭,如果设置为0就不进行检测。

    • maxclients:客户端最大连接数,这个参数会受到操作系统设置的限制。

    • tcp-keepalive: 检测TCP连接活性的周期,默认值是0,也就是不进行检 测,如果需要设置,建议为60,那么Redis会每隔60秒对它创建的TCP连接进行活 性检测,防止大量死连接占用系统资源。

    • tcp-backlog: TCP三次握手后,会将接受的连接放入队列中,tcp-backlog 就是队列的大小,它在Redis中的默认值是511.通常来讲这个参数不需要调整, 但是这个参数会受到操作系统的影响,例如在Linux操作系统中,如果/proc/ sys/net/core/somaxconn小于tcp-backlog,那么在Redis启动时会看到如下 日志,并建议将/proc/sys/net/core/somaxconn设置更大。

    修改方法也非常简单,只需要执行以下命令:

    echo 511 > /proc/sys/net/core/somaxconn

  2. 客户端统计片段

    例如下面就是一次info clients的执行结果:

    127.0.0.1:6379> info clients
    # Clients
    connected_clients:1414
    client_longest_output_list:0
    clients_biggest_input_buf:2097152
    blocked_clients:0
    

    说明如下:

    1)connected_clients:代表当前Redis节点的客户端连接数,需要重点监控, 一旦超过maxclients,新的客户端连接将被拒绝。

    2)client_longest_output_list:当前所有输出缓冲区中队列对象个数的最 大数。

    3)client_biggest_input_buf:当前所有输入缓冲区中占用的最大容量。

    4)blocked_clients:正在执行阻塞命令(例如blpop、brpop、 brpoplpush)的客户端个数。

    除此之外info stats中还包含了两个客户端相关的统计指标,如下:

    127.0.0.1:6379> info stats
    # Stats
    total_connections_received:80
    ...
    rejected_connections:0
    

    参考说明:

    • total_connections_received:Redis自启动以来处理的客户端连接数总 数。

    • rejected_connections:Redis自启动以来拒绝的客户端连接数,需要重点 监控。