在使用Jedis连接池模式下,比较常见的报错如下:

redis.clients.jedis.exceptions.JedisConnectionException:Could not get a resource from the pool

已华为云的分布式缓存服务(Redis)为例,首先确认实例是正常运行中状态,然后按以下步骤进行排查。

网络

1.        核对IP地址配置

检查jedis客户端配置的ip地址是否与缓存实例配置的子网地址一致,如果从公网访问,则检查是否与缓存实例绑定的弹性ip地址一致,不一致则修改一致后重试。

2.        测试网络

在客户端使用ping和Telnet小工具测试网络。

如果ping不通:

−          VPC内访问时,要求客户端与缓存实例的VPC相同,安全组相同或者缓存实例的安全组放开了6379端口访问。

−          公网访问时,要求缓存实例安全组放开36379端口访问。

−          如果IP地址可以ping通,telnet对应的端口不通,则尝试重启实例,如重启后仍未恢复,请联系华为云技术支持。

检查连接数是否超限

查看已建立的网络连接数是否超过JedisPool 配置的上限。如果连接数接近配置的上限值,则建议重启服务观察。如果明显没有接近,排除连接数超限可能。

Unix/Linux系统使用:

netstat-an | grep 6379 | grep ESTABLISHED | wc -l

Windows系统使用:

netstat-an | find "6379" | find "ESTABLISHED" /C

检查JedisPool连接池代码

如果连接数接近配置的上限,请分析是业务并发原因,或是没有正确使用JedisPool所致。

对于JedisPool连接池的操作,每次调用jedisPool.getResource()方法之后,需要调用jedisPool.returnResource()或者jedis.close()进行释放,优先使用close()方法。

客户端TIME_WAIT是否过多

通过ss -s查看time wait链接是否过多。

如果TIME_WAIT过多,可以调整内核参数(/etc/sysctl.conf):

##当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击 
net.ipv4.tcp_syncookies = 1 
##允许将TIME-WAITsockets重新用于新的TCP连接 
net.ipv4.tcp_tw_reuse = 1 
##开启TCP连接中TIME-WAIT sockets的快速回收 
net.ipv4.tcp_tw_recycle = 1 
##修改系統默认的TIMEOUT时间 
net.ipv4.tcp_fin_timeout = 30

调整后重启生效:/sbin/sysctl -p

无法解决问题

如果按照以上原因排查之后还有问题,可以通过抓包并将异常时间点、异常信息以及抓包文件发送给华为云技术支持协助分析。

抓包可使用tcpdump工具,命令如下:

tcpdump-i eth0 tcp and port 6379 -n -nn -s 74 -w dump.pcap

公网访问时请将端口改成36379。

网卡名请改成实际的网卡名称。

转载于:https://www.cnblogs.com/husterindg/p/9185872.html

详解Jedis连接池报错处理相关推荐

  1. vue遇到ie兼容问题如何处理_详解vue 兼容IE报错解决方案

    IE 页面空白 报错信息 此时页面一片空白 报错原因 Babel 默认只转换新的 JavaScript 语法(如箭头函数),而不转换新的 API ,比如 Iterator.Generator.Set. ...

  2. 阿里连接池报错:Failed to configure a DataSource ‘url‘ attribute is not specified and no embedd

    阿里连接池报错:Failed to configure a DataSource: 'url' attribute is not specified and no embedd 明明已经配置数据库连接 ...

  3. spingboot使用redis连接池报错

    配置如下,增加了连接池相关 redis:host: localhostport: 6379database: 7lettuce:pool:max-active: 20max-idle: 20max-w ...

  4. hibernate4配置c3p0连接池报错

    在hibernate的xml文件中配置c3p0连接池时,运行报错: java.lang.ClassNotFoundException: Could not load requested class : ...

  5. c3p0连接池报错 A client timed out while waiting

    今天在看c3p0连接池的时候,因为连接数据库疯狂报错 com.mchange.v2.resourcepool.TimeoutException: A client timed out while wa ...

  6. Druid连接池报错:org.postgresql.util.PSQLException: FATAL: too many connections for role “*********“

    一 错误描述 1 负责的BI中的数据数据可视化项目一直运行的比较稳定,突然早上用户反馈,报表查询非常慢,非常卡,而且有些网页直接打不开(单体应用,没有降级和熔断). 2 没一会CPU就报警了,CPU使 ...

  7. Druid 连接池 报错 com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

    场景赘述 早晨查看项目前一天的实际运行日志,发现了 一个Springboot项目中的druid 连接池和 mysql 产生了异常信息,重连暂并未对系统产生影响 下面是具体报错信息: com.mysql ...

  8. 解决Redis 连接池报错:ERR max number of clients reached

    前言 redis maxclients 是redis server的重要配置,它决定了客户端的最大连接数量,最大客户端连接数量.由于redis不区分连接是客户端连接还是内部打开文件或者和slave连接 ...

  9. ActiveMq-关于Spring集成ActiveMq的连接池报错

    整合activeMQ,配置连接池,启动项目报错,JmsMessagingTemplate无法注入 //使用springboot2.0+及以下版本时候,maven配置依赖是: <dependenc ...

最新文章

  1. 面对996,程序员如何利用“碎片时间”涨薪?
  2. 4G EPS 中的随机接入
  3. Fescar锁和隔离级别的理解
  4. 红队攻防之从边界突破到漫游内网(无cs和msf)
  5. 学习《css世界》笔记之多行文本实现垂直居中
  6. Python 第三方模块之 beautifulsoup(bs4)- 解析 HTML
  7. Opencv——灰度变换、直方图均衡化
  8. linux怎么重装ssh服务器,Linux平台下安装SSH
  9. linux编译有趣c程序,12个有趣的C语言问答(详解)
  10. java接口是静态_Java接口(静态方法、私有方法)
  11. 西安Uber优步司机奖励政策(12月14日到12月20日)
  12. linux mount nfs 超时,I / O无法(偶尔)挂载NFS-服务器超时
  13. redis数据类型之hash入门
  14. 线性表——顺序表基本知识以及基本操作
  15. node.val java_LeetCode——21. 合并两个有序链表(Java)
  16. Android, App常用图标尺寸规范
  17. 《创业36条军规》读书笔记
  18. 人生八境——古诗词中读懂人生境界
  19. flash.js 劫持怎么解决
  20. EBS 取消PO订单、订单行、订单发运行

热门文章

  1. 基于matlab的元音共振峰的估算
  2. Jsp实现网上定餐系统
  3. 腾讯的张小龙是一个什么样的人
  4. Beta 冲刺(6/7)
  5. ELK 使用4-Kafka + zookpeer
  6. css禁用鼠标点击事件
  7. ipvsadm的命令参考
  8. USACO / Stamps(DP)
  9. 类型初始值设定项引发异常
  10. NAT的完全分析及其UDP穿透的完全解决方案