[英]Hibernate sometimes takes far too long to obtain JDBC connection
We're using Hibernate quite successfully for the most part in our Mule application. 在Mule应用程序中,大多数情况下我们已经非常成功地使用了Hibernate。 However occasionally we are finding it's taking minutes to write from the application to the database and we need to find out why. 但是,有时我们发现从应用程序写入数据库需要花费几分钟,因此我们需要找出原因。
Here are the Spring and Hibernate logs from one such occasion. 这是这种情况下的Spring和Hibernate日志。
[2018-10-18 05:20:42.156] DEBUG org.springframework.security.authentication.ProviderManager [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: Authentication attempt using org.springframework.security.authentication.dao.DaoAuthenticationProvider
[2018-10-18 05:20:42.160] DEBUG org.springframework.beans.CachedIntrospectionResults [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: Not strongly caching class [com.company.mule.core.component.SynchronouslySaveOrUpdateImportStatusDtoComponent] because it is not cache-safe
[2018-10-18 05:20:42.160] DEBUG org.springframework.orm.jpa.JpaTransactionManager [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: Creating new transaction with name [com.company.service.ImportStatusService.saveOrMerge]: PROPAGATION_REQUIRES_NEW,ISOLATION_DEFAULT,timeout_15; ''
[2018-10-18 05:20:42.160] DEBUG org.springframework.orm.jpa.JpaTransactionManager [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: Opened new EntityManager [org.hibernate.jpa.internal.EntityManagerImpl@50302b40] for JPA transaction
[2018-10-18 05:20:42.160] DEBUG org.hibernate.engine.transaction.spi.AbstractTransactionImpl [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: begin
[2018-10-18 05:20:42.160] DEBUG org.hibernate.engine.jdbc.internal.LogicalConnectionImpl [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: Obtaining JDBC connection
.
.
.
[2018-10-18 05:54:07.470] DEBUG org.hibernate.engine.jdbc.internal.LogicalConnectionImpl [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: Obtained JDBC connection
[2018-10-18 05:54:07.470] DEBUG org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: initial autocommit status: true
[2018-10-18 05:54:07.470] DEBUG org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: disabling autocommit
[2018-10-18 05:54:07.567] DEBUG org.springframework.orm.jpa.JpaTransactionManager [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: Exposing JPA transaction as JDBC transaction [org.springframework.orm.jpa.vendor.HibernateJpaDialect$HibernateConnectionHandle@2bbdca69]
[2018-10-18 05:54:07.568] DEBUG org.springframework.orm.jpa.JpaTransactionManager [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: Found thread-bound EntityManager [org.hibernate.jpa.internal.EntityManagerImpl@50302b40] for JPA transaction
[2018-10-18 05:54:07.568] DEBUG org.springframework.orm.jpa.JpaTransactionManager [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: Participating in existing transaction
[2018-10-18 05:54:07.568] DEBUG org.hibernate.SQL [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: select this_.ID as ID1_6_1_, this_.CREATED_DATE as CREATED_2_6_1_, this_.MODIFIED_DATE as MODIFIED3_6_1_, this_.UUID as UUID4_6_1_, this_.VERSION as VERSION5_6_1_, this_.import_frequency as import_f6_6_1_, this_.import_type_id as import_t8_6_1_, this_.TENANT_ID as TENANT_I7_6_1_, type1_.ID as ID1_5_0_, type1_.CREATED_DATE as CREATED_2_5_0_, type1_.MODIFIED_DATE as MODIFIED3_5_0_, type1_.UUID as UUID4_5_0_, type1_.VERSION as VERSION5_5_0_, type1_.CODE as CODE6_5_0_, type1_.NAME as NAME7_5_0_ from import_type_detail this_ inner join import_type type1_ on this_.import_type_id=type1_.ID where type1_.CODE=? and this_.TENANT_ID=?
[2018-10-18 05:54:07.568] INFO std-out [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: Hibernate: select this_.ID as ID1_6_1_, this_.CREATED_DATE as CREATED_2_6_1_, this_.MODIFIED_DATE as MODIFIED3_6_1_, this_.UUID as UUID4_6_1_, this_.VERSION as VERSION5_6_1_, this_.import_frequency as import_f6_6_1_, this_.import_type_id as import_t8_6_1_, this_.TENANT_ID as TENANT_I7_6_1_, type1_.ID as ID1_5_0_, type1_.CREATED_DATE as CREATED_2_5_0_, type1_.MODIFIED_DATE as MODIFIED3_5_0_, type1_.UUID as UUID4_5_0_, type1_.VERSION as VERSION5_5_0_, type1_.CODE as CODE6_5_0_, type1_.NAME as NAME7_5_0_ from import_type_detail this_ inner join import_type type1_ on this_.import_type_id=type1_.ID where type1_.CODE=? and this_.TENANT_ID=?
[2018-10-18 05:54:07.671] DEBUG org.hibernate.loader.Loader [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: Result row: EntityKey[com.company.domain.ImportType#53], EntityKey[com.company.domain.ImportTypeDetail#71]
[2018-10-18 05:54:07.671] DEBUG org.hibernate.engine.internal.TwoPhaseLoad [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: Resolving associations for [com.company.domain.ImportType#53]
[2018-10-18 05:54:07.671] DEBUG org.hibernate.engine.internal.TwoPhaseLoad [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: Done materializing entity [com.company.domain.ImportType#53]
[2018-10-18 05:54:07.671] DEBUG org.hibernate.engine.internal.TwoPhaseLoad [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: Resolving associations for [com.company.domain.ImportTypeDetail#71]
[2018-10-18 05:54:07.671] DEBUG org.hibernate.engine.internal.TwoPhaseLoad [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: Done materializing entity [com.company.domain.ImportTypeDetail#71]
[2018-10-18 05:54:07.768] DEBUG org.hibernate.stat.internal.ConcurrentStatisticsImpl [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: HHH000117: HQL: [CRITERIA] select this_.ID as ID1_6_1_, this_.CREATED_DATE as CREATED_2_6_1_, this_.MODIFIED_DATE as MODIFIED3_6_1_, this_.UUID as UUID4_6_1_, this_.VERSION as VERSION5_6_1_, this_.import_frequency as import_f6_6_1_, this_.import_type_id as import_t8_6_1_, this_.TENANT_ID as TENANT_I7_6_1_, type1_.ID as ID1_5_0_, type1_.CREATED_DATE as CREATED_2_5_0_, type1_.MODIFIED_DATE as MODIFIED3_5_0_, type1_.UUID as UUID4_5_0_, type1_.VERSION as VERSION5_5_0_, type1_.CODE as CODE6_5_0_, type1_.NAME as NAME7_5_0_ from import_type_detail this_ inner join import_type type1_ on this_.import_type_id=type1_.ID where type1_.CODE=? and this_.TENANT_ID=?, time: 200ms, rows: 1
[2018-10-18 05:54:07.768] DEBUG org.hibernate.engine.spi.ActionQueue [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: Executing identity-insert immediately
[2018-10-18 05:54:07.768] DEBUG org.hibernate.SQL [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: insert into import_status (CREATED_DATE, MODIFIED_DATE, UUID, VERSION, ASSOCIATED_DATA, ELAPSED_TIME, ERROR_MODEL_COUNT, HASH, IMPORT_DATE, IMPORT_NAME, IMPORT_PROGRESS, IMPORT_TYPE_DETAILS_ID, PROCESSED_MODEL_COUNT, TENANT_ID, TOTAL_MODEL_COUNT) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
[2018-10-18 05:54:07.769] INFO std-out [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: Hibernate: insert into import_status (CREATED_DATE, MODIFIED_DATE, UUID, VERSION, ASSOCIATED_DATA, ELAPSED_TIME, ERROR_MODEL_COUNT, HASH, IMPORT_DATE, IMPORT_NAME, IMPORT_PROGRESS, IMPORT_TYPE_DETAILS_ID, PROCESSED_MODEL_COUNT, TENANT_ID, TOTAL_MODEL_COUNT) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
[2018-10-18 05:54:07.867] DEBUG org.hibernate.id.IdentifierGeneratorHelper [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: Natively generated identity: 8957
[2018-10-18 05:54:07.968] DEBUG org.hibernate.cache.ehcache.internal.regions.EhcacheGeneralDataRegion [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: key: import_status value: 6307193274236928
[2018-10-18 05:54:07.968] DEBUG org.hibernate.event.internal.AbstractFlushingEventListener [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: Processing flush-time cascades
[2018-10-18 05:54:07.968] DEBUG org.hibernate.event.internal.AbstractFlushingEventListener [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: Dirty checking collections
[2018-10-18 05:54:07.968] DEBUG org.hibernate.engine.internal.Collections [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: Collection found: [com.company.domain.ImportStatus.importErrors#8957], was: [<unreferenced>] (initialized)
[2018-10-18 05:54:07.968] DEBUG org.hibernate.event.internal.AbstractFlushingEventListener [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: Flushed: 0 insertions, 0 updates, 0 deletions to 3 objects
[2018-10-18 05:54:07.968] DEBUG org.hibernate.event.internal.AbstractFlushingEventListener [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: Flushed: 1 (re)creations, 0 updates, 0 removals to 1 collections
[2018-10-18 05:54:07.968] DEBUG org.hibernate.internal.util.EntityPrinter [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: Listing entities:
[2018-10-18 05:54:07.968] DEBUG org.hibernate.internal.util.EntityPrinter [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: com.company.domain.ImportType{createdDate=2018-03-15 14:05:00.0, code=DISPATCH_REPORT, modifiedDate=null, name=Dispatch Report, id=53, uuid=24983801440501787, version=0}
[2018-10-18 05:54:07.968] DEBUG org.hibernate.internal.util.EntityPrinter [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: com.company.domain.ImportStatus{associatedData=null, errorModelCount=0, uuid=8A897AAE6682E06E016685BCFE5022B5, version=0, importErrors=[], createdDate=Thu Oct 18 05:54:07 UTC 2018, associatedDataLatestId=null, totalModelCount=0, importDate=2018-10-18 05:20:42.009, modifiedDate=null, tenantId=202, importName=DISPATCH_REPORT, id=8957, associatedDataSourceSystem=null, importProgress=NOT_STARTED, processedModelCount=0, hash=null, importTypeDetail=com.company.domain.ImportTypeDetail#71, elapsedTime=0.0}
[2018-10-18 05:54:07.968] DEBUG org.hibernate.internal.util.EntityPrinter [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: com.company.domain.ImportTypeDetail{importType=com.company.domain.ImportType#53, createdDate=2018-03-15 14:05:00.0, modifiedDate=null, tenantId=202, id=71, importFrequency=DAILY, uuid=24983801440501788, version=0}
[2018-10-18 05:54:07.968] DEBUG org.hibernate.cache.ehcache.internal.regions.EhcacheGeneralDataRegion [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: key: import_error value: 6307193274236929
[2018-10-18 05:54:07.968] DEBUG org.springframework.orm.jpa.JpaTransactionManager [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: Initiating transaction commit
[2018-10-18 05:54:07.969] DEBUG org.springframework.orm.jpa.JpaTransactionManager [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: Committing JPA transaction on EntityManager [org.hibernate.jpa.internal.EntityManagerImpl@50302b40]
[2018-10-18 05:54:07.969] DEBUG org.hibernate.engine.transaction.spi.AbstractTransactionImpl [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: committing
[2018-10-18 05:54:08.068] DEBUG org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: committed JDBC Connection
[2018-10-18 05:54:08.068] DEBUG org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: re-enabling autocommit
[2018-10-18 05:54:08.165] DEBUG org.hibernate.cache.ehcache.internal.regions.EhcacheGeneralDataRegion [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: key: import_status value: 6307193029283840
[2018-10-18 05:54:08.165] DEBUG org.hibernate.cache.ehcache.internal.regions.EhcacheGeneralDataRegion [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: key: import_error value: 6307193029283840
[2018-10-18 05:54:08.165] DEBUG org.springframework.orm.jpa.JpaTransactionManager [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: Closing JPA EntityManager [org.hibernate.jpa.internal.EntityManagerImpl@50302b40] after transaction
[2018-10-18 05:54:08.165] DEBUG org.springframework.orm.jpa.EntityManagerFactoryUtils [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: Closing JPA EntityManager
[2018-10-18 05:54:08.165] INFO org.hibernate.engine.internal.StatisticalLoggingSessionEventListener [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: Session Metrics {
2005309943402 nanoseconds spent acquiring 1 JDBC connections;
0 nanoseconds spent releasing 0 JDBC connections;
385901 nanoseconds spent preparing 2 JDBC statements;
199318868 nanoseconds spent executing 2 JDBC statements;
0 nanoseconds spent executing 0 JDBC batches;
725792 nanoseconds spent performing 4 L2C puts;
0 nanoseconds spent performing 0 L2C hits;
0 nanoseconds spent performing 0 L2C misses;
417472 nanoseconds spent executing 1 flushes (flushing a total of 3 entities and 1 collections);
2444 nanoseconds spent executing 1 partial-flushes (flushing a total of 0 entities and 0 collections)
[2018-10-18 05:54:08.165] DEBUG org.hibernate.engine.jdbc.internal.LogicalConnectionImpl [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: Releasing JDBC connection
[2018-10-18 05:54:08.166] DEBUG org.hibernate.engine.jdbc.internal.LogicalConnectionImpl [[prd-globe-import-acmeap].HTTP_Message_Listener_Configuration.worker.57]: Released JDBC connection
Any thoughts on what the problem may be? 对问题可能有什么想法?
Would it be possible at the very least to get it to time out after a reasonable amount of time? 在合理的时间后,是否至少有可能使它超时?
Many thanks, Pete 非常感谢,皮特
I would check the database logs to have additional informations. 我将检查数据库日志以获取其他信息。 Maybe the database is in lock state when you try to write and you need to wait long. 尝试写入时,数据库可能处于锁定状态,需要等待很长时间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.