java web 卡死

miaolupan 2014-08-21 04:26:21
我用的是spring3+mybatis+tomcat服务,数据库是mysql,程序每过几天会出现一次卡死,就是登陆的时候页面无响应,ie直接卡死,数据库连接有几个sleep的进程,但是没发现lock的,不知是不是能说明不是死锁?tomcat也没任何信息,检查代码用到连接都关了。重启tomcat又可以了,以下是卡死时清空tomcat缓存后右键tomcat黑窗口打印出来的异常信息,请大神赐教!

org.apache.ibatis.exceptions.PersistenceException:
### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.Communicati
onsException: Communications link failure

The last packet successfully received from the server was 1,487,194 milliseconds
ago. The last packet sent successfully to the server was 0 milliseconds ago.
### The error may exist in com/tms/domain/UserMapper.xml
### The error may involve com.tms.dao.IUserDao.searchUser-Inline
### The error occurred while setting parameters
### SQL: select * from user where userId=? and pwd=?
### Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communicatio
ns link failure

The last packet successfully received from the server was 1,487,194 milliseconds
ago. The last packet sent successfully to the server was 0 milliseconds ago.
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(Exception
Factory.java:23)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(Defau
ltSqlSession.java:104)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(Defau
ltSqlSession.java:95)
at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.ja
va:124)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:90)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:40)
at com.sun.proxy.$Proxy17.searchUser(Unknown Source)
at com.tms.dao.impl.UserDao.searchUser(UserDao.java:56)
at com.tms.service.impl.UserLoginService.getUserByNameAndPwd(UserLoginSe
rvice.java:23)
at com.tms.web.controller.LoginController.login(LoginController.java:65)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.
invokeHandlerMethod(HandlerMethodInvoker.java:176)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandle
rAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandle
rAdapter.handle(AnnotationMethodHandlerAdapter.java:424)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(Dispatch
erServlet.java:923)
at org.springframework.web.servlet.DispatcherServlet.doService(Dispatche
rServlet.java:852)
at org.springframework.web.servlet.FrameworkServlet.processRequest(Frame
workServlet.java:882)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServ
let.java:789)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52
)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:208)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterIntern
al(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerR
equestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authentica
torBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:
950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp
11Processor.java:1040)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(
AbstractProtocol.java:607)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoin
t.java:313)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.
java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
.java:615)
at java.lang.Thread.run(Thread.java:724)
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communicatio
ns link failure

The last packet successfully received from the server was 1,487,194 milliseconds
ago. The last packet sent successfully to the server was 0 milliseconds ago.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstruct
orAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingC
onstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1
121)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3673)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3562)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4113)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2818)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.ja
va:2157)
at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1379)

at sun.reflect.GeneratedMethodAccessor42.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(Prepare
dStatementLogger.java:58)
at com.sun.proxy.$Proxy19.execute(Unknown Source)
at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(P
reparedStatementHandler.java:56)
at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(Ro
utingStatementHandler.java:70)
at org.apache.ibatis.executor.ReuseExecutor.doQuery(ReuseExecutor.java:5
4)
at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecuto
r.java:267)
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:141)
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:124)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(Defau
ltSqlSession.java:101)
... 44 more
Caused by: java.io.EOFException: Can not read response from server. Expected to
read 4 bytes, read 0 bytes before connection was unexpectedly lost.
at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:3119)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3573)
... 63 more
...全文
391 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Intboy 2014-08-25
  • 打赏
  • 举报
回复
数据库链接资源泄露?数据库链接池搞大点儿试试
attilax 2014-08-25
  • 打赏
  • 举报
回复
连接泄漏问题,,可以查看现在的数据库连接, 估计溢出maxconn了... 解决之道:: 配置连接池自动关闭,或者检测代码,关闭连接
  • 打赏
  • 举报
回复
试试启动内存配置大点:-Xms512m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=512m
miaolupan 2014-08-22
  • 打赏
  • 举报
回复
引用 4 楼 yktd26 的回复:
从连接池里取出一个连接后检查下他的状态
怎么操作啊?请大神指教
yktd26 2014-08-21
  • 打赏
  • 举报
回复
从连接池里取出一个连接后检查下他的状态
yktd26 2014-08-21
  • 打赏
  • 举报
回复
看起来像是你维护的connection pool 里面某些或者所有connection已经被服务器端或者防火墙断开了连接 而程序在使用这些connection时没有检查他们的状态而直接使用 Mysql有个connection最长连接的设置,默认值忘了..., 如果有防火墙也有可能防火墙里有设置最长连接时间的. 不过最有效的办法还是看看程序里这些连接是怎么使用的,连接池是怎么维护的
  • 打赏
  • 举报
回复
### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.Communicati onsException: Communications link failure 按照报错的理解就是,与数据库之间的连接通信不畅,估计是在与数据库连接的时候,数据库偶尔会断开,然后程序就出问题了,可以看下程序连接数据库的策略是什么样的呢
  • 打赏
  • 举报
回复
会不会是jar包版本的问题, 你将mysql-connector-java-x.x.x-bin.jar 换个版本试试

67,516

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧