| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> 大数据 -> redis 连接打满的解决 -> 正文阅读 |
|
|
[大数据]redis 连接打满的解决 |
|
先上效果,连接数从10000下降到25,提升400倍;
内存占用,从70%下降到18%,降幅1/4;
一、现象服务用了redis,主要为加锁用,保证唯一性;最初服务正常,后期只要用到redis的地方,不超2分钟,10000的连接数就会被打满,最后造成资源耗尽、服务崩溃。
? 二、分析阿里云redis最大连接数是10000个,被打满只有2个可能,连接数创建后,要么没释放(销毁),要么在持续不断的创建,且创建数无大于释放数。 怀疑1:连接没被释放 查代码,所有加锁的地方,最终都在finally中作unlock,所以此条被排除、
怀疑2:连接在不断的创建,且大于销毁数 因为最初的redis是用默认配置,代码如下:
以为是相关参数没配置,于是把参数加上,然并卵
后来查到这位博友:单例模式之「双重校验锁」_HoryC的博客-CSDN博客_单例模式双重校验锁 的文章,忽然顿悟,可能是JFinal在实现时,没有默认像SpringBoot一样将redis转为单例,造成不断创建线程连接,从源码可以看出,连接池默认是64,在旧锁未释放前,不断创建,造成打爆 三、解决?知道原因就好办了,在创建前先作判断,如果存在则直接return,否则创建
|
|
|
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年12日历 | -2025/12/4 12:33:19- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |