zoukankan      html  css  js  c++  java
  • 详解Jedis连接池报错处理

    在使用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。

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

  • 相关阅读:
    bzoj1415 NOI2005聪聪和可可
    Tyvj1952 Easy
    poj2096 Collecting Bugs
    COGS 1489玩纸牌
    COGS1487 麻球繁衍
    cf 261B.Maxim and Restaurant
    cf 223B.Two Strings
    cf 609E.Minimum spanning tree for each edge
    cf 187B.AlgoRace
    cf 760B.Frodo and pillows
  • 原文地址:https://www.cnblogs.com/husterindg/p/9185872.html
Copyright © 2011-2022 走看看