redis压测两小时后超时

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis压测两小时后超时相关的知识,希望对你有一定的参考价值。

redis压测超时可能与服务器性能或者redis使用情况有关。为了缓解超时,可以优化redis内存配置,提高服务器性能,减少数据库中的垃圾数据,并减少对redis数据库的并发读写请求。另外,除了提升服务器性能之外,还可以考虑使用多台服务器来分布压测任务,以缩短压测时间。 参考技术A 您好,在redis压测过程中,超时是指服务器在处理某个请求时,超过了预设的时间,导致请求失败。超时可能是由于服务器性能不足,或者是服务器处理请求时出现了瓶颈,导致处理时间过长。要解决这个问题,首先要检查服务器的性能,确保服务器的资源足够支撑处理请求,其次要检查服务器的瓶颈,查看是否有什么地方可以优化,以提高服务器的处理效率。

压测过程中网络带宽瓶颈案例分析

近期在做一个项目的性能测试时,在打压时发现压力达到100hps后就一直打不上去,同时还会报读redis服务器超时的错误。

查看了下打压服务器的cpu和内存占用,没有发现什么异常。

通过nmon监控服务器资源信息

CPU占用:

技术分享

 

内存占用:

技术分享

 

1、由于会报redis链接超时错误,首先定位到的是redis服务器挂了,找到开发将log中添加具体连接超时的redis服务器ip信息后,重新跑了一遍。

依然会报连接redis服务器超时错误,开发立即查看了下对应ip的redis服务器。发现运行情况没有出现任何问题,各项指标均正常

 

2、查看压力服务器的各项指标来定位问题。

用sar命令看了下磁盘性能,发现每秒写扇区的次数达到300以上,怀疑是写入次数过多导致的,于是查了下开发的脚本,发现开发每一步判断逻辑中都加了写errorlog操作。于是怀疑是写log导致的。

将开发的写log操作大部分都关闭(除了读redis服务器错误)后,重新跑了一下,发现写扇区的次数降到100左右,但是tps依然打不上去。排除了磁盘写入的问题。

 

3、接下来安装了nmon工具后,重新跑了一遍,看了下网络传输,发现tps达到100左右时,网络出口占用为120M/s!这是千兆网卡的满载速率了。于是定位到网络成为主要的瓶颈。

网络I/O传输表:可以发现eth0-write的速率达到120千KB,也就是120M(注意这里的单位是“千”)

技术分享

4、查了下自己的打压脚本,发现部分请求的返回数据大小为4M。果断将请求的返回改为200K后重新打压后,压力可以成功达到2000hps以上。同时也没有再出现读redis超时的错误。

 至此,此次问题排查圆满结束。同时向大家着力推荐一下nmon工具。里面记录的参数很全,基本上定位性能的指标(比如cpu、内存、每个cpu、每个磁盘分区的读写、磁盘busy情况、网络吞吐、网络包数据等)都能够统计到。

 

以上是关于redis压测两小时后超时的主要内容,如果未能解决你的问题,请参考以下文章

记一次压测中Mysql数据库异常分析过程

Jmeter压测软件监控资源问题

jmeterTcp取样器压测出现500错误,读取数据超时请问怎么解决?

StackExchange.Redis Timeout performing 超时问题

StackExchange.Redis Timeout performing 超时问题

技术干货 | 高负载压测下接口异常问题定位排查-Redis