群582337768分享的一个实际案例

由于研发的逻辑处理不当,导致内存急速飙升。

ps: 研发排查了N天,没查出来,群友三下五除二就搞定了。你确定不加一下吗

研发【想法】的代码逻辑-客户端请求:

  1. 请求处理逻辑:

    • 如果redis有数据,就在redis进行查询。
    • 如果Redis中没有数据,则在MySQL中进行查询,并将结果插入Redis以供后续使用。
  2. 内存激增问题【客户端节点数量多】:

    • 【qps其增】客户端请求内容需要更新同一个Redis key,导致在高并发情况下可能出现内存激增。
    • 【暂存】需要保证数据一致性,将客户端请求内容先保存到Redis的某个“暂存区”。
    • 【统一】暂存区的数据需依次更新同一个Redis key的内容。
    • 【增加】由于暂存区数据不释放,导致内存持续增加。
    • 【单key内容超过250K,只能表示他们真的250吧】注意到单个key内容超过250K时,需评估是否有必要对单个key的数据进行拆分,以避免内存压力。

解决方向的选择:

  1. 获取锁【SETNX分布式锁,谁有锁谁有写的权限】:

    • 使用分布式锁机制,确保只有一个程序能进行写入操作,其他程序需等待。
    • 需要考虑锁的粒度、超时机制及死锁情况的处理,确保系统健壮性。
  2. Redis内存管理【redis的内存碎片和内存波动】:
    • 监控Redis的内存碎片和波动问题,确保内存使用效率。
    • 可以使用Redis的内存管理工具,定期清理不必要的数据,设置合理的TTL(过期时间)以自动释放内存。
  3. 数据一致性:
    • 在高并发情况下,考虑使用乐观锁或其他一致性机制,确保数据的准确性和一致性。
  4. 性能优化:
    • 考虑Redis的分片或集群方案,以应对高QPS环境下的性能瓶颈,提升整体系统的可用性和响应速度。

案例分享,由于研发的代码逻辑问题,导致redis内存急速飙升的更多相关文章

  1. http500:服务器内部错误案例详解(服务器代码语法错误或者逻辑错误)

    http500:服务器内部错误案例详解(服务器代码语法错误或者逻辑错误) 一.总结 服务器内部错误可能是服务器中代码运行的时候的语法错误或者逻辑错误 二.http500:服务器内部错误案例详解 只是一 ...

  2. Unity3D加密保护案例分享(一)

    Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏.建筑可视化.实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎.通过u ...

  3. 【案例分享】SpreadJS金融行业应用实践,开发基于Web Excel的指标补录平台

    SpreadJS作为一款基于 HTML5 的纯前端电子表格控件,以“高速低耗.高度类似Excel.可无限扩展”为产品特色,提供移动跨平台和浏览器支持,可同时满足 .NET.Java.App 等应用程序 ...

  4. 【案例分享】使用ActiveReports报表工具,在.NET MVC模式下动态创建报表

    提起报表,大家会觉得即熟悉又陌生,好像常常在工作中使用,又似乎无法准确描述报表.今天我们来一起了解一下什么是报表,报表的结构.构成元素,以及为什么需要报表. 什么是报表 简单的说:报表就是通过表格.图 ...

  5. ArcGIS Add-in插件开发从0到1及实际案例分享

    同学做毕设,要求我帮着写个ArcGIS插件,实现功能为:遍历所有图斑,提取相邻图斑的公共边长及其他属性(包括相邻图斑的ID),链接到属性表中.搞定后在这里做个记录.本文分两大部分: ArcGIS插件开 ...

  6. 老李分享:pep8 python代码规范

    老李分享:pep8 python代码规范 什么是PEPPEP是 Python Enhancement Proposal 的缩写,翻译过来就是 Python增强建议书 . PEP8 译者:本文基于 20 ...

  7. 老李案例分享:定位JAVA内存溢出

    老李案例分享:定位JAVA内存溢出   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.在poptest的loadrunner的培 ...

  8. httpclient的主要业务代码逻辑(图解)

    一,主要代码逻辑(图解) 二,两个案例的对比(图解) 三,详细案例 3.1,博文一 httppost的用法(NameValuePair(简单名称值对节点类型)核心对象) 3.2,博文二 httpcli ...

  9. [转载]DevOps在传统企业的落地实践及案例分享

    内容来源:2017年6月10日,优维科技高级解决方案架构师黄星玲在“DevOps&SRE 超越传统运维之道”进行<DevOps在传统企业的落地实践及案例分享>演讲分享.IT 大咖说 ...

  10. 前端案例分享(一):CSS+JS实现流星雨动画

    目录 引言 1.效果图 2.源码 3.案例解析 4.小问题 5.结语 引言        平常会做一些有意思的小案例练手,通常都会发到codepen上,但是codepen不能写分析.        所 ...

随机推荐

  1. C#/.NET/.NET Core技术前沿周刊 | 第 43 期(2025年6.16-6.22)

    前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...

  2. 故障处理:ORA-04031真实案例分享

    我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效 ...

  3. 别再被 Spring Security 和 Shiro 劝退了!这款国产 Java 权限框架真香!

    Hello,大家好,我是程序员NEO. 在 Java 开发中,权限认证是个绕不开的话题.但一提起 Spring Security 或 Shiro,很多人是不是瞬间就头大了?复杂的配置.陡峭的学习曲线, ...

  4. CF1928D Lonely Mountain Dungeons 题解

    CF1928D Lonely Mountain Dungeons 提供一个三分做法. 假设我们已经知道了分 \(x\) 队,那对于每一个种族,我们就应该尽量平均分到这 \(x\) 个队伍中.我们可以先 ...

  5. Java中==与equals()函数的区别

    前段时间写网站,在servlet中要对用户输入的密码做判断,就出现一个很奇怪的现象:if条件句中如果用"=="作判断条件,就没法通过验证,而一换成equlas()函数,就完美解决了 ...

  6. MySQL 14 count(*)这么慢,我该怎么办?

    count(*)的实现方式 在不同的MySQL引擎中,count(*)有不同的实现方式: MyISAM引擎把一个表的总行数存在磁盘上,执行count(*)时能直接返回总行数,效率很高: InnoDB引 ...

  7. QN 笔试反思 HL笔试 反思

    先写 HL的笔试题目 int a[4]; a++;是错的  因为  a代表了一个常量的地址. 百度解释: 对于一维数组,数组名代表的是数组的首地址,而且数组名是一个常量地址,也就是说数组名的地址是不可 ...

  8. POLIR-Society-Organization-Psychology-Relationship关系-Dating Stages阶段: Questions to Ask Your Partner to Take Your Connection Next Level

    https://www.verywellmind.com/questions-to-ask-your-partner-dating-stages-5270161 Relationships > ...

  9. POLIR-Organization-大计(15、10、5年计划)-教材-如何分辨一本好书-十(二/三/四)五规划-引进版(原版/影印/编译版)-自研版:等级(得奖/国家级/省/地)+分级(研究生/本科/大中专/职业院校)

    POLIR-Organization-大计(15.10.5年计划)-教材-十(二/三/四)五规划-等级(得奖/国家级/省/地)+分级(研究生/本科/大中专/职业院校) References: 北京大学 ...

  10. node实现图片四周填充透明区域

    前言 不知道你们有没有遇到这样的情况,写小程序的时候,文档里面推荐的 tabbar 图标是 81 * 81,但是实际效果图片又偏大,而且配置项也没有可调节的配置.那么怎么样解决这个问题呢?一般都是找 ...