记一次tomcat session redis共享报错 Could not get a resource from the pool

<!doctype html>
<html lang="zh">

<head>
    <title>HTTP状态 500 - 内部服务器错误</title>
    <style type="text/css">
        body {
            font-family: Tahoma, Arial, sans-serif;
        }

        h1,
        h2,
        h3,
        b {
            color: white;
            background-color: #525D76;
        }

        h1 {
            font-size: 22px;
        }

        h2 {
            font-size: 16px;
        }

        h3 {
            font-size: 14px;
        }

        p {
            font-size: 12px;
        }

        a {
            color: black;
        }

        .line {
            height: 1px;
            background-color: #525D76;
            border: none;
        }
    </style>
</head>

<body>
    <h1>HTTP状态 500 - 内部服务器错误</h1>
    <hr class="line" />
    <p><b>类型</b> 异常报告</p>
    <p><b>消息</b> javax.servlet.ServletException: redis.clients.jedis.exceptions.JedisConnectionException: Could not get
        a resource from the pool</p>
    <p><b>描述</b> 服务器遇到一个意外的情况,阻止它完成请求。</p>
    <p><b>例外情况</b></p>
    <pre>org.apache.jasper.JasperException: javax.servlet.ServletException: redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:623)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:489)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:327)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:779)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    filter.CORSFilter.doFilter(CORSFilter.java:34)
</pre>
    <p><b>根本原因。</b></p>
    <pre>javax.servlet.ServletException: redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
    org.apache.jsp.mall_jsp._jspService(mall_jsp.java:228)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:779)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:466)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:327)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:779)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    filter.CORSFilter.doFilter(CORSFilter.java:34)
</pre>
    <p><b>根本原因。</b></p>
    <pre>redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
    redis.clients.util.Pool.getResource(Pool.java:53)
    redis.clients.jedis.JedisPool.getResource(JedisPool.java:99)
    redis.clients.jedis.JedisPool.getResource(JedisPool.java:12)
    com.seejoke.tomcat.redissessions.RedisSessionManager.acquireConnection(RedisSessionManager.java:186)
    com.seejoke.tomcat.redissessions.RedisSessionManager.createSession(RedisSessionManager.java:320)
    org.apache.catalina.connector.Request.doGetSession(Request.java:3112)
    org.apache.catalina.connector.Request.getSession(Request.java:2492)
    org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:908)
    org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:920)
    org.apache.jasper.runtime.PageContextImpl.initialize(PageContextImpl.java:130)
    org.apache.jasper.runtime.JspFactoryImpl.internalGetPageContext(JspFactoryImpl.java:109)
    org.apache.jasper.runtime.JspFactoryImpl.getPageContext(JspFactoryImpl.java:59)
    org.apache.jsp.mall_jsp._jspService(mall_jsp.java:125)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:779)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:466)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:327)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:779)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    filter.CORSFilter.doFilter(CORSFilter.java:34)
</pre>
    <p><b>根本原因。</b></p>
    <pre>redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketException: Connection reset
    redis.clients.util.RedisInputStream.ensureFill(RedisInputStream.java:202)
    redis.clients.util.RedisInputStream.readByte(RedisInputStream.java:40)
    redis.clients.jedis.Protocol.process(Protocol.java:147)
    redis.clients.jedis.Protocol.read(Protocol.java:211)
    redis.clients.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:297)
    redis.clients.jedis.Connection.getStatusCodeReply(Connection.java:196)
    redis.clients.jedis.BinaryJedis.auth(BinaryJedis.java:2049)
    redis.clients.jedis.JedisFactory.makeObject(JedisFactory.java:89)
    org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:836)
    org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:434)
    org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:361)
    redis.clients.util.Pool.getResource(Pool.java:49)
    redis.clients.jedis.JedisPool.getResource(JedisPool.java:99)
    redis.clients.jedis.JedisPool.getResource(JedisPool.java:12)
    com.seejoke.tomcat.redissessions.RedisSessionManager.acquireConnection(RedisSessionManager.java:186)
    com.seejoke.tomcat.redissessions.RedisSessionManager.createSession(RedisSessionManager.java:320)
    org.apache.catalina.connector.Request.doGetSession(Request.java:3112)
    org.apache.catalina.connector.Request.getSession(Request.java:2492)
    org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:908)
    org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:920)
    org.apache.jasper.runtime.PageContextImpl.initialize(PageContextImpl.java:130)
    org.apache.jasper.runtime.JspFactoryImpl.internalGetPageContext(JspFactoryImpl.java:109)
    org.apache.jasper.runtime.JspFactoryImpl.getPageContext(JspFactoryImpl.java:59)
    org.apache.jsp.mall_jsp._jspService(mall_jsp.java:125)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:779)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:466)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:327)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:779)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    filter.CORSFilter.doFilter(CORSFilter.java:34)
</pre>
    <p><b>根本原因。</b></p>
    <pre>java.net.SocketException: Connection reset
    java.net.SocketInputStream.read(SocketInputStream.java:210)
    java.net.SocketInputStream.read(SocketInputStream.java:141)
    java.net.SocketInputStream.read(SocketInputStream.java:127)
    redis.clients.util.RedisInputStream.ensureFill(RedisInputStream.java:196)
    redis.clients.util.RedisInputStream.readByte(RedisInputStream.java:40)
    redis.clients.jedis.Protocol.process(Protocol.java:147)
    redis.clients.jedis.Protocol.read(Protocol.java:211)
    redis.clients.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:297)
    redis.clients.jedis.Connection.getStatusCodeReply(Connection.java:196)
    redis.clients.jedis.BinaryJedis.auth(BinaryJedis.java:2049)
    redis.clients.jedis.JedisFactory.makeObject(JedisFactory.java:89)
    org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:836)
    org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:434)
    org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:361)
    redis.clients.util.Pool.getResource(Pool.java:49)
    redis.clients.jedis.JedisPool.getResource(JedisPool.java:99)
    redis.clients.jedis.JedisPool.getResource(JedisPool.java:12)
    com.seejoke.tomcat.redissessions.RedisSessionManager.acquireConnection(RedisSessionManager.java:186)
    com.seejoke.tomcat.redissessions.RedisSessionManager.createSession(RedisSessionManager.java:320)
    org.apache.catalina.connector.Request.doGetSession(Request.java:3112)
    org.apache.catalina.connector.Request.getSession(Request.java:2492)
    org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:908)
    org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:920)
    org.apache.jasper.runtime.PageContextImpl.initialize(PageContextImpl.java:130)
    org.apache.jasper.runtime.JspFactoryImpl.internalGetPageContext(JspFactoryImpl.java:109)
    org.apache.jasper.runtime.JspFactoryImpl.getPageContext(JspFactoryImpl.java:59)
    org.apache.jsp.mall_jsp._jspService(mall_jsp.java:125)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:779)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:466)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:327)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:779)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    filter.CORSFilter.doFilter(CORSFilter.java:34)
</pre>
    <p><b>):注意</b> 主要问题的全部 stack 信息可以在 server logs 里查看</p>
    <hr class="line" />
    <h3>Apache Tomcat/9.0.71</h3>
</body>

</html>

我的配置

<Context>

    <!-- Default set of monitored resources. If one of these changes, the    -->
    <!-- web application will be reloaded.                                   -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
    
    <Valve className="com.seejoke.tomcat.redissessions.RedisSessionHandlerValve"/> 
    <Manager className="com.seejoke.tomcat.redissessions.RedisSessionManager" 
          host="xxx.xxx.xxx.xx"
          port="6379"
          database="0" 
          password="mogu2018"
          maxInactiveInterval="1800" /> 

    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
    <!--
    <Manager pathname="" />
    -->
</Context>

 

 

tomcat启动日志;

12-Jun-2023 11:00:57.076 WARNING [main] org.apache.tomcat.util.digester.SetPropertiesRule.begin Match [Context/Manager] failed to set property [maxInactiveInterval] to [1800]
 

一直以为是这个maxInactiveInterval 失效引起的,但是之前用的好好的。

改源码写死还是这样,

突然发现配置的IP是公网IP,改为内网IP之后就正常了。

阿里云真的很奇怪。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值