带有 Elastic Beanstalk 和 Tomcat - "The last packet successfully received from the server was ___ seconds ago" 的 AWS RDS

AWS RDS with Elastic Beanstalk and Tomcat - "The last packet successfully received from the server was ___ seconds ago"

感谢您提供的任何见解。我是系统管理的新手,陷入了困境。

我有一个使用 Amazon Web Services 的 RDS 实例。它托管着一个 MySQL 5.6 数据库。我的 Elastic Beanstalk 应用程序是 运行 一个 Linux 服务器和 Tomcat 8/Java 8。我的 Web 应用程序使用 Hibernate 与数据库通信。在我的 Hibernate.cfg.xml 文件中,我已将 "autoReconnect=true" 添加到我的数据库 link 但这没有帮助。

有谁知道这个错误,并且可以告诉我是什么原因造成的?

type Exception report

message Request processing failed; nested exception is org.hibernate.exception.JDBCConnectionException: could not execute query

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.exception.JDBCConnectionException: could not execute query
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:981)
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:871)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:845)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause

org.hibernate.exception.JDBCConnectionException: could not execute query
    org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:99)
    org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
    org.hibernate.loader.Loader.doList(Loader.java:2536)
    org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276)
    org.hibernate.loader.Loader.list(Loader.java:2271)
    org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:119)
    org.hibernate.impl.SessionImpl.list(SessionImpl.java:1716)
    org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:347)
    org.hibernate.impl.CriteriaImpl.uniqueResult(CriteriaImpl.java:369)
    com.grandcircus.spring.util.dao.ChaplainDAO.getByEmail(ChaplainDAO.java:32)
    com.grandcircus.spring.util.dao.DAO.getUserType(DAO.java:68)
    com.grandcircus.spring.controller.HomeController.loginFormSubmit(HomeController.java:89)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:498)
    org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:222)
    org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)
    org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:814)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:737)
    org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:969)
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:871)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:845)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was273873 seconds ago.The last packet sent successfully to the server was 273873 seconds ago, which  is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.
    sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
    com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)
    com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3246)
    com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1917)
    com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2060)
    com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2542)
    com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1734)
    com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1885)
    org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:208)
    org.hibernate.loader.Loader.getResultSet(Loader.java:1953)
    org.hibernate.loader.Loader.doQuery(Loader.java:802)
    org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)
    org.hibernate.loader.Loader.doList(Loader.java:2533)
    org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276)
    org.hibernate.loader.Loader.list(Loader.java:2271)
    org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:119)
    org.hibernate.impl.SessionImpl.list(SessionImpl.java:1716)
    org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:347)
    org.hibernate.impl.CriteriaImpl.uniqueResult(CriteriaImpl.java:369)
    com.grandcircus.spring.util.dao.ChaplainDAO.getByEmail(ChaplainDAO.java:32)
    com.grandcircus.spring.util.dao.DAO.getUserType(DAO.java:68)
    com.grandcircus.spring.controller.HomeController.loginFormSubmit(HomeController.java:89)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:498)
    org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:222)
    org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)
    org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:814)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:737)
    org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:969)
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:871)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:845)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause

java.net.SocketException: Broken pipe (Write failed)
    java.net.SocketOutputStream.socketWrite0(Native Method)
    java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:111)
    java.net.SocketOutputStream.write(SocketOutputStream.java:155)
    java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
    java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140)
    com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3227)
    com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1917)
    com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2060)
    com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2542)
    com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1734)
    com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1885)
    org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:208)
    org.hibernate.loader.Loader.getResultSet(Loader.java:1953)
    org.hibernate.loader.Loader.doQuery(Loader.java:802)
    org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)
    org.hibernate.loader.Loader.doList(Loader.java:2533)
    org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276)
    org.hibernate.loader.Loader.list(Loader.java:2271)
    org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:119)
    org.hibernate.impl.SessionImpl.list(SessionImpl.java:1716)
    org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:347)
    org.hibernate.impl.CriteriaImpl.uniqueResult(CriteriaImpl.java:369)
    com.grandcircus.spring.util.dao.ChaplainDAO.getByEmail(ChaplainDAO.java:32)
    com.grandcircus.spring.util.dao.DAO.getUserType(DAO.java:68)
    com.grandcircus.spring.controller.HomeController.loginFormSubmit(HomeController.java:89)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:498)
    org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:222)
    org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)
    org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:814)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:737)
    org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:969)
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:871)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:845)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

正如 Deepak 所说,这是一个连接池问题。我按照我的 MKYong 提供的有关该主题的步骤进行操作,这解决了该问题。在这里阅读更多内容:

https://www.mkyong.com/hibernate/how-to-configure-the-c3p0-connection-pool-in-hibernate/

此问题与AWS或RDS或beanstalk无关。这是典型的连接池问题。

确定这是否是池问题;尝试重新启动 tomcat.. 这个问题应该会消失。如果是,请尝试 google 解决该问题;你会发现很多帮助,比如 How to configure c3p0 in hibernate to auto-refresh stale DB connections