欢迎投稿

今日深度:

redis 流量异常问题处理,redis流量处理

redis 流量异常问题处理,redis流量处理


1、问题背景:

redis版本:3.2.10,集群模式,3主3从,分布在三台服务器,每台都一主一从,对应的主从交叉分布,主从不能都在同一台机器上。

2、问题描述:

单台redis的流量上升,导致服务器报警。

3、问题处理过程:

在对应的redis服务器上,使用命令:iftop -npP 监控流量进出,可以看到ip尾数是3的这台服务器访问redis 流量异常。

 

到3这台机器上(业务服务器),查看所占用端口为39868的进程id,使用命令:netstat -ap|grep 39868 查出占用39868的程序信息。

因为我们这台服务器上面只有一个java进程,所以这步直接过了,使用top直接查看了。


top -H -p 1748  查看具体线程信息,可以看到,有三个线程执行100多小时,而且占用较多cpu资源,线程没有办法查看对应占用端口(有方法的朋友可以分享下),怀疑二者有关联。


然后jstack 1748 > jstack.log,查看线程堆栈信息。将图中标出的进程号换算成16进制,找到对应的线程堆栈信息。三个线程都在执行同一个redis操作。


找到对应代码,发现有可能导致死循环的代码段,一直在进行redis查询操作。


为了确认,在服务器上抓包

tcpdump -i eth0 -t -s 0 -c 100 port 39868 -w package.cap


然后在Wireshark打开,追踪TCP流,可以看到,程序一直在发送ZRANGE请求,并且请求参数都一样,并且redis返回为空。


4、问题总结:

根据对应代码和抓包的内容,可以得出结论:是因为程序存在问题,Sorted Set中没有数据,导致一直循环请求,最终导致流量上涨。




www.htsjk.Com true http://www.htsjk.com/redis/35950.html NewsArticle redis 流量异常问题处理,redis流量处理 1、问题背景: redis版本:3.2.10,集群模式,3主3从,分布在三台服务器,每台都一主一从,对应的主从交叉分布,主从不能都在同一台机器上。...
相关文章
    暂无相关文章
评论暂时关闭