ThreadMonitor W WSVR0605W: Поток "WebContainer: 11" (000005bb) активен в течение 743576 миллисекунд и может зависать
В производственной среде я часто получал сообщение об ошибке.
Журнал ниже.
[12/16/15 16:47:30:095 PHT] 00000030 ThreadMonitor W WSVR0605W: Thread "WebContainer : 11" (000005bb) has been active for 743576 milliseconds and may be hung. There is/are 5 thread(s) in total in the server that may be hung.
at java.util.HashMap.getEntry(HashMap.java:479)
at java.util.HashMap.get(HashMap.java:429)
at com.c2lbiz.symbiosys.insurance.product.business.ProductBO.getElementKeyString(ProductBO.java:222)
at com.c2lbiz.symbiosys.insurance.product.business.ProductBO.evaluateField(ProductBO.java:2156)
at com.c2lbiz.symbiosys.insurance.product.business.ProductBO.calculateFundFacets(ProductBO.java:2594)
at com.c2lbiz.symbiosys.insurance.product.business.ProductBO.calculateIllustration(ProductBO.java:1113)
at com.c2lbiz.symbiosys.insurance.quotation.util.QuotationUtil.generateIllustrationOutput(QuotationUtil.java:486)
at com.c2lbiz.symbiosys.insurance.quotation.business.QuoteIllustration.execute(QuoteIllustration.java:49)
at com.c2lbiz.symbiosys.insurance.controller.quotation.QuoteCaptureController.generateIllustrationPDF(QuoteCaptureController.java:176)
at com.c2lbiz.symbiosys.insurance.controller.quotation.GetOutputPreferencesController.process(GetOutputPreferencesController.java:66)
at com.c2lbiz.symbiosys.insurance.controller.quotation.QuoteCaptureController.process(QuoteCaptureController.java:1)
at com.c2lbiz.symbiosys.systemcommon.controller.BaseController.handleRequestInternal(BaseController.java:106)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:827)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:874)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:790)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:595)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1230)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:779)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478)
at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:136)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:97)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:359)
at org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
at org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
at org.springframework.security.ui.ExceptionTranslationFilter.doFilterHttp(ExceptionTranslationFilter.java:101)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
at org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(AbstractProcessingFilter.java:271)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
at org.springframework.security.ui.logout.LogoutFilter.doFilterHttp(LogoutFilter.java:89)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
at org.springframework.security.ui.logout.LogoutFilter.doFilterHttp(LogoutFilter.java:89)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
at org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionContextIntegrationFilter.java:235)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
at org.springframework.security.concurrent.ConcurrentSessionFilter.doFilterHttp(ConcurrentSessionFilter.java:99)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:371)
at org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:174)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:967)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1107)
at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:87)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:919)
at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1662)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:200)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:463)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:530)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:316)
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:88)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1881)
Началось с подвешивания темы 1 и далее
There is/are 1 thread(s) in total in the server that may be hung.
There is/are 2 thread(s) in total in the server that may be hung.
There is/are 3 thread(s) in total in the server that may be hung.
There is/are 4 thread(s) in total in the server that may be hung.
There is/are 5 thread(s) in total in the server that may be hung.
There is/are 6 thread(s) in total in the server that may be hung.
There is/are 7 thread(s) in total in the server that may be hung.
There is/are 8 thread(s) in total in the server that may be hung.
There is/are 9 thread(s) in total in the server that may be hung.
There is/are 10 thread(s) in total in the server that may be hung.
...............
...............
There is/are 77 thread(s) in total in the server that may be hung.
После этого генерация PDF перестает работать, и пакетный запуск также прекращается. Пакетное задание генерирует pdf и отправляет на указанный emailid. Что является основной причиной этой ошибки? Тот же код отлично работает в среде UAT и SIT.
1 ответ
Решение
При некоторых обстоятельствах get() из несинхронизированного HashMap может вызвать бесконечный цикл. Это может произойти, если одновременный метод put() вызывает перефразирование карты. В моем случае: я использую несинхронизированный hashmap и параллельный поток, вызывающий метод get and put для этого hashmap. Это вызвало бесконечный цикл в методе get, и поток зависает. Это мое наблюдение.