首页 > 数据库 >redis 流量增加过多问题排查解决

redis 流量增加过多问题排查解决

时间:2024-11-25 18:11:35浏览次数:5  
标签:查看 redis 流量 排查 线程 堆栈

背景

Java项目,使用Redis集群。

现象

Redis集群,单台流量增加过多。
在redis服务器上:iftop -npP

排查过程

发现流量上涨是同一台机器IP尾号3。到这台机器上查看。
top 命令查看进程id

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

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

找到对应代码,发现当Zset中为空时,会导致死循环的代码段,一直在进行redis查询操作。

为了确认,在对应服务器上抓包
tcpdump -i eth0 -t -s 0 -c 100 port 39868 -w package.cap

在Wireshark打开,可以看到,程序一直在发送ZRANGE 请求,请求参数都一样,redis返回为空。

结论与修正

根据排查现象和代码,可以得出结论:是因为代码考虑不全面,Sorted Set 中没有数据,导致一直循环请求,陷入死循环,一直执行redis请求,导致流量上涨。找负责同事进行修复后问题解决。

标签:查看,redis,流量,排查,线程,堆栈
From: https://www.cnblogs.com/crazy-dev/p/18568275

相关文章

  • redis~有序集合处理ip范围的查询问题
    目前有两种方式对IP以及归属地信息进行缓存:第一种是将起始IP,结束IP以及中间所有IP转换成整型,然后以字符串方式,用转换后的IP作为key,归属地信息作为value存入Redis;第二种是采用有序集合和散列方式,首先将起始IP和结束IP添加到有序集合ip2cityid,城市ID作为成员......
  • mysql数据库Cpu利用率100%问题排查
    问题某日生产数据库mysql突然查询异常缓慢,应用层无法获取连接,所有接口都基本处于无法响应状态。查看数据库监控是cpu利用率100%。腾讯云mysql5.7经验教训排查问题的时候要有公允心,不要想隐瞒什么。不要想着包庇什么。“存天理,去人欲”最终排查结论是因为慢sql引起的,然后......
  • node + Redis + svg-captcha 实现验证码
    目录前提说明Redis链接与封装svg-captcha使用步骤封装中间件验证前端接收扩展【svgAPI】svgCaptcha.create(options)svgCaptcha.createMathExpr(options)svgCaptcha.loadFont(url)svgCaptcha.optionssvgCaptcha.randomText([size|options])svgCaptcha(text,opti......
  • 彻底理解如何保证Redis和数据库数据一致性问题
    一.背景系统中缓存最常用的策略是:服务端需要同时维护DB和Cache并且是以DB的结果为准,那么就可能出现DB和Cache数据不一致的问题。二.读数据逻辑如下:当客户端发起查询数据的请求,首先回去Redis中查看没有没该数据,有就返回,没有的话就需要去数据库中查询该数据,并......
  • Redis使用案例之限流器
    Redis使用案例之限流器一、什么是限流器限流器是一种流量限制的工具,可用于防止接口在同一时间有过高的并发Redis有两种实现限流器的算法1.基于桶令牌的算法​以时间段为单位,恒定的给桶中放入令牌,每次请求从桶中获取令牌2.基于漏桶算法​控制接口流速,先创建一个桶,......
  • 1+X应急响应(网络)网络流量分析技术:
    网络流量分析技术:全流量分析:Wireshark常用功能:Wireshark界面:Wireshark常用的使用方法:        全流量分析-分析web攻击:       全流量分析-分析DNS攻击:  全流量分析-分析病毒:  全流量分析-分析ARP攻击:    NetFlow流量分析:......
  • SpringBoot 2.x 整合 Redis
    整合1)添加依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><!--如果没有使用下面给出的工具类,那么就不需要引入--><dependency><groupId>c......
  • 第54篇 Redis简单介绍
    前言Redis,作为一种开源的、基于内存且支持持久化的键值存储系统,以其卓越的性能、丰富灵活的数据结构和高度可扩展性在全球范围内广受欢迎。Redis不仅提供了一种简单直观的方式来存储和检索数据,更因其支持数据结构如字符串、哈希、列表、集合、有序集合等多种类型,使得其在众多场景......
  • 【StringRedisTemplate】SpringBoot项目集成Redis
    目录SpringDataRedis介绍SpringDataRedis的作用SpringDataRedis提供的工具类环境准备引入依赖配置文件StringRedisTemplate的使用StringRedisTemplate的基础APIStringRedisTemplate的常用操作APIRedis的应用场景SpringDataRedis介绍SpringData是Spring......
  • Jedis存储一个以byte[]的形式的对象到Redis
    1.1准备一个User实体类importlombok.AllArgsConstructor;importlombok.Data;importlombok.NoArgsConstructor;importjava.io.Serializable;importjava.util.Date;@Data@NoArgsConstructor@AllArgsConstructorpublicclassUserimplementsSerializable{......