<!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之后就正常了。
阿里云真的很奇怪。