Я новичок в мире 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)
Благодарю за ваш ответ. К несчастью. У меня нет доступа, чтобы запустить его в производство. Можете ли вы предложить больше, если таковые имеются. Подозрительная роль в этом
Я думаю, ты на БЫЛ? Вы уверены, что он настроен таким же образом в тесте (сравните xml для конфигурации)? Можете ли вы установить com.ibm.websphere.threadmonitor.dump.java = true в WAS в продукте? Это приведет к трассировке стека при возникновении ошибки, что даст вам то, что будет производить jstack, но может быть проще убедить операции использовать встроенную функцию! Кроме того, это может быть ошибка Java, особенно если вы используете IBM JDK. Убедитесь, что у вас установлены последние пакеты исправлений от IBM.
Да, мы используем WAS 9.0.0.6 и, согласно команде серверов, они все повторяют. Я получил дамп потока, и там так много припаркованных потоков, но я мог видеть любую заблокированную. И эти темы, похоже, не связаны с этой проблемой. В основном из Spring, EhCache. Да, мы используем IBM JDK. Есть ли известная проблема в 8.0.64 для identityhashmap
Вы нашли решение этой проблемы? Мы сталкиваемся с аналогичной проблемой на JBoss 6.1 EAP на нашем PROD.
В этом случае запустите "jstack -l pid", где pid - это идентификатор процесса Java. В трассировке стека вы можете найти поток, который удерживает блокировку (если это проблема блокировки), и потоки, которые ее ждут. Какую среду выполнения Java вы используете?