Зависший поток в IdentityHashMap во время DefaultAutoFlushEventListener.onAutoFlush

Я новичок в мире Spring и Hibernate. Проблема убивает нас. Это происходит только в продакшене. Мы попытались воспроизвести это в более низкой среде с той же нагрузкой, конфигурациями. Но это не воспроизводится.

Назад Раунд проблемы - когда мы загружаем набор данных из БД. Hibernate сбрасывает сеанс перед чтением. Во время этой промывки мы столкнулись с этой проблемой. Мы поняли, что можем справиться с этим с помощью режима очистки, транзакции только для чтения или изменяемого объекта (если таблицы только для чтения). Но на самом деле проблема, поскольку она не воспроизводится в нижнем Env, мы не можем отметить что-либо из вышеперечисленного как исправление.

Любое предложение, помощь очень ценится.

[5/1/18 14:33:00:774 EDT] 0000008b ThreadMonitor W WSVR0605W: Thread "WebContainer : 23" (00000142) has been active for 758291 milliseconds and may be hung. There is/are 19 thread(s) in total in the server that may be hung. at java.util.IdentityHashMap.put(IdentityHashMap.java:440) at org.hibernate.engine.internal.StatefulPersistenceContext.addChildParent(StatefulPersistenceContext.java:1657) at org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:456) at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:383) at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:193) at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:126) at org.hibernate.event.internal.AbstractFlushingEventListener.cascadeOnFlush(AbstractFlushingEventListener.java:150) at org.hibernate.event.internal.AbstractFlushingEventListener.prepareEntityFlushes(AbstractFlushingEventListener.java:141) at org.hibernate.event.internal.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:74) at org.hibernate.event.internal.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:44) at org.hibernate.internal.SessionImpl.autoFlushIfRequired(SessionImpl.java:1396) at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1481) at org.hibernate.query.internal.AbstractProducedQuery.doList(AbstractProducedQuery.java:1445) at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1414) at org.hibernate.query.Query.getResultList(Query.java:146) at com.bbh.asl.service.dao.AslSearchDaoImpl.findAllAslFormByStatus(AslSearchDaoImpl.java:198) at com.bbh.asl.service.search.ASLSearchServiceImpl.findByAslStatus(ASLSearchServiceImpl.java:142) at com.bbh.asl.service.search.ASLSearchServiceImpl.getAslDashBoardData(ASLSearchServiceImpl.java:190) at sun.reflect.GeneratedMethodAccessor481.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55) at java.lang.reflect.Method.invoke(Method.java:508) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:282) 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.$Proxy148.getAslDashBoardData(Unknown Source) at com.bbh.asl.web.service.ASLSearchServiceImpl.searchDashBoardData(ASLSearchServiceImpl.java:56) at com.bbh.asl.web.controller.ASLSearchController.loadDashBoard(ASLSearchController.java:69) at sun.reflect.GeneratedMethodAccessor480.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55) at java.lang.reflect.Method.invoke(Method.java:508) 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)

В этом случае запустите "jstack -l pid", где pid - это идентификатор процесса Java. В трассировке стека вы можете найти поток, который удерживает блокировку (если это проблема блокировки), и потоки, которые ее ждут. Какую среду выполнения Java вы используете?

ewramner 01.05.2018 21:02

Благодарю за ваш ответ. К несчастью. У меня нет доступа, чтобы запустить его в производство. Можете ли вы предложить больше, если таковые имеются. Подозрительная роль в этом

Testuser 01.05.2018 22:10

Я думаю, ты на БЫЛ? Вы уверены, что он настроен таким же образом в тесте (сравните xml для конфигурации)? Можете ли вы установить com.ibm.websphere.threadmonitor.dump.java = true в WAS в продукте? Это приведет к трассировке стека при возникновении ошибки, что даст вам то, что будет производить jstack, но может быть проще убедить операции использовать встроенную функцию! Кроме того, это может быть ошибка Java, особенно если вы используете IBM JDK. Убедитесь, что у вас установлены последние пакеты исправлений от IBM.

ewramner 02.05.2018 07:57

Да, мы используем WAS 9.0.0.6 и, согласно команде серверов, они все повторяют. Я получил дамп потока, и там так много припаркованных потоков, но я мог видеть любую заблокированную. И эти темы, похоже, не связаны с этой проблемой. В основном из Spring, EhCache. Да, мы используем IBM JDK. Есть ли известная проблема в 8.0.64 для identityhashmap

Testuser 03.05.2018 00:29

Вы нашли решение этой проблемы? Мы сталкиваемся с аналогичной проблемой на JBoss 6.1 EAP на нашем PROD.

Kamil Roman 22.05.2019 10:10
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
5
110
0

Другие вопросы по теме