Стек кучи JVM заполняется через некоторое время - PullRequest
0 голосов
/ 27 марта 2019

У меня есть основная задача потребителя на основе пружины для ввода / вывода событий в реляционной базе данных. Наличие Jpa с Hibernate в качестве ORM. Мой потребитель отлично работает с данными около 10K записей, но потерпел неудачу, когда мы ищем событие в данных около 2 миллионов записей. При выполнении анализа корневых причин (RAC) с использованием журналов. Я получил ошибку как:

> >  Application exception overridden by rollback exception java.lang.OutOfMemoryError: Java heap space 2019-03-27 16:50:48,942
> INFO  i.s.s.e.s.EventServiceImpl -Some Exception Occurred in
> fetchAllEventsByReferenceId :
> org.springframework.transaction.TransactionSystemException: Could not
> roll back JPA transaction; nested exception is
> javax.persistence.PersistenceException: unexpected error when
> rollbacking
>         at org.springframework.orm.jpa.JpaTransactionManager.doRollback(JpaTransactionManager.java:548)
>         at org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback(AbstractPlatformTransactionManager.java:853)
>         at org.springframework.transaction.support.AbstractPlatformTransactionManager.rollback(AbstractPlatformTransactionManager.java:830)
>         at org.springframework.transaction.interceptor.TransactionAspectSupport.completeTransactionAfterThrowing(TransactionAspectSupport.java:522)
>         at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:286)
>         at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
>         at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
>         at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136)
>         at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
>         at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:133)

Пока я пытался очистить кучу, используя -XX: + UseConcMarkSweepGC . Все началось хорошо, но теперь мой пул Хикари занят и застрял, отвечая и выдавая исключение:

Ошибка при выполнении команды загрузки: org.hibernate.exception.GenericJDBCException: не удалось извлечь ResultSet

java.sql.SQLNonTransientConnectionException: сбой канала связи во время отката (). Разрешение транзакции неизвестно.

org.hibernate.exception.GenericJDBCException: не удалось извлечь ResultSet

...