美文网首页
Redis线上问题:连接太多导致,应用启动失败

Redis线上问题:连接太多导致,应用启动失败

作者: 鱼da王 | 来源:发表于2019-01-24 17:29 被阅读0次

最近一次上线时,出现有的实例可构建成功,有的实例不能构建成功。当时比较紧急,采用了最直接的方式是切换到新的Redis实例。但是根本问题还是没有解决,在此记录分析一下。

问题发现:

​ 通过jenkins构建日志,发现了这样一段错误日志

WARNING: Cannot get master address from sentinel running @ redis3.blackfi.sh:36379. Reason: redis.clients.jedis.exceptions.JedisDataException: ERR max number of clients reached. Trying next one.

问题分析:

​ 其实通过日志可知,Redis服务端的连接已经达到了最大的连接数,客户端无法建立连接。通过运维查看,确实该Redis集群已存在大量的连接,不能建立新的连接。连接数量大,一个是因为线上的应用比较多,这个就没有办法了,只能从Redis硬件方面增添升级。二是因为看不到服务器端的情况,猜测有可能应用在终止时,连接没有释放,导致服务器端存在无效连接。这部分可以在代码层面和配置可以改善和配置。

问题解决方案:

  1. RedisServer配置

    # Close the connection after a client is idle for N seconds (0 to disable) timeout 0
    

    配置含义:RedisServer会自动关闭超过N seconds时间的idel的连接,如果配置0那就是用不关闭。所以可以检查此配置是否是0。如果是0,请修改。

  2. 代码

    为保证redis连接池在关闭项目时候,收回连接池连接,配置destroy-method方法。

    <bean id="jedisConfig" class="redis.clients.jedis.JedisPoolConfig"> 
     <property name="testWhileIdle" value="true"/>
    </bean>
    <bean id="jedisPool" class="redis.clients.jedis.JedisPool" destroy-method="destroy">
     <constructor-arg ref="jedisConfig" />
     <constructor-arg value="localhost" />
     <constructor-arg type="int" value="6379" /> 
    </bean>
    

相关文章

  • Redis线上问题:连接太多导致,应用启动失败

    最近一次上线时,出现有的实例可构建成功,有的实例不能构建成功。当时比较紧急,采用了最直接的方式是切换到新的Redi...

  • 解决Caused by: java.lang.IllegalAr

    这两天服务部署启动,突然不work,查看启动日志发现是redis初始化,出现了异常,导致应用启动失败开始以为是re...

  • Redis使用规范

    常见问题及建议 连接泄露 有些客户端应用没有使用连接池,redis连接用完后没有及时释放,导致服务侧的存活连接越来...

  • 无法加入redis集群问题

    由于上周总部机房停电,导致开发同事反馈某些组件无法连接,redis是其中之一。登入服务器发现redis未启动,启动...

  • Apache HttpClient使用不当导致的请求超时问题排查

    Apache HttpClient使用不当导致的请求超时问题排查 一、背景 近期负责的线上应用出现调用失败的问题,...

  • redis常用命令

    查看redis进程 连接redis redis启动 redis停止 redis查看配置文件 redis查看最大连接...

  • redis基本操作

    启动-关闭 启动:redis-server.exe redis.windows.conf连接:redis-cli....

  • process launch failed: Unspecifi

    进程启动失败,问题很奇葩,造成这个问题的原因是因为设备升级iOS系统导致,重启手机和Xcode重新连接即可解决问题。

  • Redis相关

    1. 启动Redis客户端 使用Dokcer启动 Ubuntu安装与启动 2. 连接Redis redis-cli...

  • 记录一次mysql磁盘满载,备份与还原。

    应用访问失败,查看应用并重启,发现Mysql和Redis连接不上,Mysql和Redis两个在同一台服务器上,经过...

网友评论

      本文标题:Redis线上问题:连接太多导致,应用启动失败

      本文链接:https://www.haomeiwen.com/subject/uhjujqtx.html