Jedis连接踩坑日记
Jedis连接踩坑日记
背景: 线上某块业务的增删改功能全部都不可用。页面发送了xhr请求之后 状态一直处于pending状态,后端没有日志产生
排查路线与解决办法
第一:由于服务在内网里面,无法进行远程调试。所以采用比较笨的方式,在代码里面多加一些日志,最后定位
JedisUtil.getJedis().hset(RedisConstant.WHITE, model.getRdiUuid(), JSON.toJSONString(model.getRdiWhitelist().split(",")));
JedisUtil是前任封装的工具类,代码执行到这里的时候请求会处于阻塞状态
我之前一直用的是RedisTemplate来操作redis的 并没有出现过类似的情况,这也是第一次接触jedis,看完这块代码的时候没有及时发现问题,索性在chatGPT上问答了一下
gpt的答案提到了关于资源释放的关键字,然后我看了下jedis实例确实有close方法。
@Override
public void close() {
if (dataSource != null) {
JedisPoolAbstract pool = this.dataSource;
this.dataSource = null;
if (client.isBroken()) {
pool.returnBrokenResource(this);
} else {
pool.returnResource(this);
}
} else {
super.close();
}
}
跟踪一下代码发现close是重写了父类BinaryJedis的close方法,而BinaryJedis是实现了Closeable接口
在Java里面实现了Closeable接口的类是可以通过try with resource语法来处理资源关闭问题的,所以我们将原来的写法改成
try (Jedis jedis = JedisUtil.getJedis()) {
jedis.hset(RedisConstant.WHITE, model.getRdiUuid(), JSON.toJSONString(model.getRdiWhitelist().split(",")));
}
验证
将jedis连接池改成5 重启项目 调用了有jedis相关的接口之后 很快后续的请求便发生了阻塞,使用try with resource语法之后 问题不再复现了。
完结 撒花!!!
Jedis连接踩坑日记的更多相关文章
- AI相关 TensorFlow -卷积神经网络 踩坑日记之一
上次写完粗浅的BP算法 介绍 本来应该继续把 卷积神经网络算法写一下的 但是最近一直在踩 TensorFlow的坑.所以就先跳过算法介绍直接来应用场景,原谅我吧. TensorFlow 介绍 TF是g ...
- 人工智能(AI)库TensorFlow 踩坑日记之一
上次写完粗浅的BP算法 介绍 本来应该继续把 卷积神经网络算法写一下的 但是最近一直在踩 TensorFlow的坑.所以就先跳过算法介绍直接来应用场景,原谅我吧. TensorFlow 介绍 TF是g ...
- hexo博客谷歌百度收录踩坑日记
title: hexo博客谷歌百度收录踩坑日记 toc: false date: 2018-04-17 00:09:38 百度收录文件验证 无论怎么把渲染关掉或者render_skip都说我的格式错误 ...
- Hexo搭建静态博客踩坑日记(二)
前言 Hexo搭建静态博客踩坑日记(一), 我们说到利用Hexo快速搭建静态博客. 这节我们就来说一下主题的问题与主题的基本修改操作. 起步 chrome github hexo git node.j ...
- Hexo搭建静态博客踩坑日记(一)
前言 博客折腾一次就好, 找一个适合自己的博客平台, 专注于内容进行提升. 方式一: 自己买服务器, 域名, 写前端, 后端(前后分离最折腾, 不分离还好一点)... 方式二: 利用Hexo, Hug ...
- JavaScript 新手的踩坑日记
引语 在1995年5月,Eich 大神在10天内就写出了第一个脚本语言的版本,JavaScript 的第一个代号是 Mocha,Marc Andreesen 起的这个名字.由于商标问题以及很多产品已经 ...
- React Native Android配置部署踩坑日记
万事开头难 作为一只进入ECMAScript世界不久的菜鸟,已经被React Native的名气惊到了,开源一周数万星勾起了我浓烈的兴趣.新年新气象,来个HellWorld压压惊吧^_^(故意少打个' ...
- 人工智能(AI)库TensorFlow 踩坑日记之二
上次 踩坑日志之一 遗留的问题终于解决了,所以作者(也就是我)终于有脸出来写第二篇了. 首先还是贴上 卷积算法的示例代码地址 :https://github.com/tensorflow/models ...
- 微信小程序开发踩坑日记
2017.12.29 踩坑记录 引用图片名称不要使用中文,尽量使用中文命名,IDE中图片显示无异样,手机上图片可能出现不显示的情况. 2018.1.5 踩坑记录 微信小程序设置元素满屏,横向直接w ...
- cocos creator踩坑日记
踩坑一 问题:项目在构建成Web Mobile后运行在浏览器和微信中,点击页面任何地方都会导致自动全屏 解决:在构建之后的main.js中,去掉 cc.view.enableAutoFullScree ...
随机推荐
- liquibase customChange
liquibase customChange liquibase changeset 执行Java代码. liquibase支持yml等文件,支持引入sql文件,还支持Java这种方式执行change ...
- Java实现对ES数据的新增,删除,修改,及合并
Java实现对ES数据的新增,删除,修改,及合并 新增数据 代码: @Autowired private RestHighLevelClient client; /** * @description ...
- 遥感图像镶嵌拼接:ENVI的Pixel Based Mosaicking工具操作方法
本文介绍基于ENVI软件,利用"Pixel Based Mosaicking"工具实现栅格遥感影像镶嵌拼接的方法. 首先需要说明的是,本文需要镶嵌的遥感影像并不含地理参考信 ...
- vscode 函数注释方法 输入 /** 回车 自动就出来了
vscode 函数注释方法 输入 /** 回车 自动就出来了
- linux 服务器 执行命令挂起 nohup 改用 pm2
nohup http-server -p 80 & nohup完要 exit 退出,不能直接关! nohup完要 exit 退出,不能直接关! nohup完要 exit 退出,不能直接关! 重 ...
- PlatformIO+ESP32+Vscode+DS18B20温度传感器(一直输出-127)
DS18B20一直输出-127 ?? 一.硬件连线 二.代码 三.遇到的问题 一.硬件连线 将相应的线接到ESP wroom 32 二.代码 先在PlatformIO的library添加onWire库 ...
- stm32 串口DMA源码解析
一 DMA协议: DMA是STM32内的一个硬件模块,它独立于CPU在外围设备和内存之间进行数据传输,解放了CPU.每个型号的STM32 MCU有1-2个DMA,每个DMA有一定数量的Channel ...
- 中国十大热门网站榜中榜/Alexa综合排名TOP10(2015)
互联网企业是由网络为基础的经营,一般包括IT行业.电子商务.软件开发等. 商业时代催生网络时代兴起,互联网以其强大的信息存储.信息互通.信息处理等功能,风靡全世界,无处无有,轻松一点,信息就在你面前. ...
- atcoder: Moves on Binary Tree
先进行压缩move的次数,再用biginteger. import java.io.BufferedReader; import java.io.IOException; import java.io ...
- 3DCAT为3D应用在云端构筑一个可靠的家
保护知识产权,一直是数字化长期关注的议题,如何保护应用内的数字化资产(文字.图片.音频.视频.模型)等,是当今行业的难题,只要运行在Windows环境的三维应用,都可能面临被破解提取出资产,为原创版权 ...