1. ホーム

接続を開けなかった例外のログと解析

2022-02-28 08:49:02

このブログ記事は、突然のプロジェクト例外の個人的な分析です。

例外メッセージ

org.springframework.transaction.CannotCreateTransactionException: トランザクションのための Hibernate セッションを開くことができませんでした。

個人的な翻訳です。CannotCreateThingsException: トランザクションのためにHibernateセッションを開くことができませんでした。

ネストされた例外は org.hibernate.exception.GenericJDBCException.GenericJDBCException です。接続を開けませんでした。

個人的な翻訳です。接続を開くことができませんでした

上記のとおりです。例外の最初の理由はデータベース接続が確立できなかったことであり、その後、接続できない理由をさらに分析します。

例外メッセージです。

WARN org.hibernate.engine.jdbc.spi.SqlExceptionHelper - SQL Error: 0, SQLState: null

個人的な翻訳:警告の例外、無視してください。

ERROR org.hibernate.engine.jdbc.spi.SqlExceptionHelper - wait millis 60000, active 20, maxActive 20, creating 0

個人的な翻訳: sql exception, wait millis 60000, connection pool active 20, max connections 20

上図 さらに、接続プールが無料の接続を提供できないことが判明し、リクエストは例外をスローする前に60,000ミリ秒待機することになりました。

原因を分析する。

1. 同時並行性の高いリクエスト? そのプロジェクトはその日にアクティビティがあり、高い同時実行性がある可能性があります。

2. 接続が閉じられていない?さらなるトラブルシューティングが必要です

現在の解決策:サービスを再起動し、データベース接続プールの最大接続数を増やします。しかし、問題が治ったかは不明です。

以下の情報は、問題点を指摘したいお偉いさんのためのものです、ありがとうございました!

完全な例外メッセージ

2019-09-05 14:31:14,259 [http-bio-443-exec-1589] WARN org.hibernate.engine.jdbc.spi.SqlExceptionHelper - SQL Error: 0, SQLState: null
2019-09-05 14:31:14,259 [http-bio-443-exec-1589] ERROR org.hibernate.engine.jdbc.spi.SqlExceptionHelper - wait millis 60000, active 20, maxActive 20, creating 0
CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.springframework.transaction. GenericJDBCException: Could not open connection
	at org.springframework.orm.hibernate4.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:544)
	at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager. java:373)
	at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java: 447)
	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:277)
	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)
	at com.sun.proxy.$Proxy227.getByOriginalId(Unknown Source)
	at com.****.WxContext.getWxAccount(WxContext.java:199)
	at com.***.WxContext.getOriginalId(WxContext.java:158)
	at com.***.handler.SubscribeHandler.getWelcome(SubscribeHandler.java:128)
	at com.***.handler.SubscribeHandler.reply(SubscribeHandler.java:107)
	at com.***.handler.SubscribeHandler.handle(SubscribeHandler.java:63)
	at me.chanjar.weixin.message.rule.WxMessageRouterRule.service(WxMessageRouterRule.java:228)
	at me.chanjar.weixin.message.rule.WxMessageRouter.doRoute(WxMessageRouter.java:223)
	at me.chanjar.weixin.message.rule.WxMessageRouter.routeMp(WxMessageRouter.java:159)
	at com.***.gateway.WxCoreController.processRawEncrypt(WxCoreController.java:93)
	at com.***.gateway.WxCoreController.wechat(WxCoreController.java:69)
	at sun.reflect.GeneratedMethodAccessor1125.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle( ServletInvocableHandlerMethod.java:97)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod( RequestMappingHandlerAdapter.java:827)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter. java:738)
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
	at com.gomore.experiment.logging.TeeFilter.doFilter(TeeFilter.java:66)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
	at org.jeecgframework.core.aop.GZipFilter.doFilter(GZipFilter.java:93)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
	at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:123)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
	at org.apache.catalina.core.