电子书 当前页面的脚本发生错误 Redis性能问题排查解决手册(值得收藏)

11/28 05:13:01 来源网站:辅助卡盟网

Redis-cli --latency -h 127.0.0.1 -p 6379

其host和port是Redis实例的ip及端口。由于当前服务器不同的运行情况,延迟时间可能有所误差,通常1G网卡的延迟时间是200μs。

以毫秒为单位测量Redis的响应延迟时间,楼主本机的延迟是300μs:

跟踪Redis延迟性能

Redis之所以这么流行的主要原因之一就是低延迟特性带来的高性能,所以说解决延迟问题是提高Redis性能最直接的办法。拿1G带宽来说,若是延迟时间远高于200μs,那明显是出现了性能问题。

虽然在服务器上会有一些慢的IO操作,但Redis是单核接受所有客户端的请求,所有请求是按良好的顺序排队执行。因此若是一个客户端发过来的命令是个慢操作,那么其他所有请求必须等待它完成后才能继续执行。

使用延迟命令提高性能

一旦确定延迟时间是个性能问题后,这里有几个办法可以用来分析解决性能问题。

「1. 使用slowlog查出引发延迟的慢命令:」

Redis中的slowlog命令可以让我们快速定位到那些超出指定执行时间的慢命令,默认情况下命令若是执行时间超过10ms就会被记录到日志。slowlog只会记录其命令执行的时间,不包含io往返操作,也不记录单由网络延迟引起的响应慢。

通常1gb带宽的网络延迟,预期在200μs左右,倘若一个命令仅执行时间就超过10ms,那比网络延迟慢了近50倍。想要查看所有执行时间比较慢的命令,可以通过使用Redis-cli工具,输入slowlog get命令查看,返回结果的第三个字段以微妙位单位显示命令的执行时间。

假如只需要查看最后10个慢命令,输入slowlog get 10即可。关于怎么定位到是由慢命令引起的延迟问题,可查看total_commands_processed介绍章节。

当前脚本发生错误 51_dnf当前脚本发生错误_电子书 当前页面的脚本发生错误

图中字段分别意思是:

倘若你想自定义慢命令的标准,可以调整触发日志记录慢命令的阀值。若是很少或没有命令超过10ms,想降低记录的阀值,比如5毫秒,可在Redis-cli工具中输入下面的命令配置:

config set slowlog-log-slower-than 5000

也可以在Redis.config配置文件中设置,以微妙位单位。

「2.监控客户端的连接:」

因为Redis是单线程模型(只能使用单核),来处理所有客户端的请求, 但由于客户端连接数的增长,处理请求的线程资源开始降低分配给单个客户端连接的处理时间,这时每个客户端需要花费更多的时间去等待Redis共享服务的响应。

这种情况下监控客户端连接数是非常重要的,因为客户端创建连接数的数量可能超出预期的数量,也可能是客户端端没有有效的释放连接。在Redis-cli工具中输入info clients可以查看到当前实例的所有客户端连接信息。

如下图,第一个字段(connected_clients)显示当前实例客户端连接的总数:

Redis默认允许客户端连接的最大数量是10000。若是看到连接数超过5000以上,那可能会影响Redis的性能。倘若一些或大部分客户端发送大量的命令过来,这个数字会低的多。

「3.限制客户端连接数:」

自Redis2.6以后,允许使用者在配置文件(Redis.conf)maxclients属性上修改客户端连接的最大数,也可以通过在Redis-cli工具上输入config set maxclients 去设置最大连接数。

根据连接数负载的情况,这个数字应该设置为预期连接数峰值的110%到150之间,若是连接数超出这个数字后,Redis会拒绝并立刻关闭新来的连接。通过设置最大连接数来限制非预期数量的连接数增长,是非常重要的。

    暂无相关资讯
电子书 当前页面的脚本发生错误 Redis性能问题排查解决手册(值得收藏)