Return-Path: X-Original-To: apmail-tomcat-users-archive@www.apache.org Delivered-To: apmail-tomcat-users-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 2E0A118F8F for ; Thu, 17 Mar 2016 17:36:38 +0000 (UTC) Received: (qmail 95427 invoked by uid 500); 17 Mar 2016 17:36:34 -0000 Delivered-To: apmail-tomcat-users-archive@tomcat.apache.org Received: (qmail 95363 invoked by uid 500); 17 Mar 2016 17:36:34 -0000 Mailing-List: contact users-help@tomcat.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "Tomcat Users List" Delivered-To: mailing list users@tomcat.apache.org Received: (qmail 95057 invoked by uid 99); 17 Mar 2016 17:36:33 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 17 Mar 2016 17:36:33 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id 81C8CC3384 for ; Thu, 17 Mar 2016 17:36:33 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 0.28 X-Spam-Level: X-Spam-Status: No, score=0.28 tagged_above=-999 required=6.31 tests=[KAM_LAZY_DOMAIN_SECURITY=1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=-0.01, RCVD_IN_MSPIKE_WL=-0.01] autolearn=disabled Received: from mx2-lw-us.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id wU1FOY5eSZmt for ; Thu, 17 Mar 2016 17:36:31 +0000 (UTC) Received: from rgout0105.bt.lon5.cpcloud.co.uk (rgout0105.bt.lon5.cpcloud.co.uk [65.20.0.125]) by mx2-lw-us.apache.org (ASF Mail Server at mx2-lw-us.apache.org) with ESMTP id C783F5F1D5 for ; Thu, 17 Mar 2016 17:36:30 +0000 (UTC) X-OWM-Source-IP: 86.162.232.62 (GB) X-OWM-Env-Sender: medthomas@btinternet.com X-CTCH-RefID: str=0001.0A090202.56EAEB18.001C,ss=1,re=0.000,recu=0.000,reip=0.000,cl=1,cld=1,fgs=0 X-Junkmail-Premium-Raw: score=27/50,refid=2.7.2:2016.3.17.164817:17:27.888,ip=86.162.232.62,rules=__USER_AGENT, __IN_REP_TO, __REFERENCES, __MIME_VERSION, __CTE, __CT, __CT_TEXT_PLAIN, CT_TEXT_PLAIN_UTF8_CAPS, __BOUNCE_CHALLENGE_SUBJ, __BOUNCE_NDR_SUBJ_EXEMPT, __SUBJ_ALPHA_END, __HAS_FROM, __TO_MALFORMED_2, __HAS_MSGID, __SANE_MSGID, __MSGID_APPLEMAIL, __ANY_URI, __URI_NO_WWW, __CP_URI_IN_BODY, __STOCK_PHRASE_7, __OEM_PRICE, __FRAUD_MONEY_CURRENCY_DOLLAR, __SUBJ_ALPHA_NEGATE, __URI_IN_BODY, __FORWARDED_MSG, BODY_SIZE_10000_PLUS, __MIME_TEXT_ONLY, RDNS_GENERIC_POOLED, __URI_NS, SXL_IP_DYNAMIC[62.232.162.86.fur], HTML_00_01, HTML_00_10, __FRAUD_MONEY_CURRENCY, RDNS_SUSP_GENERIC, __URI_NO_PATH, RDNS_SUSP, REFERENCES, NO_URI_HTTPS X-CTCH-Spam: Unknown Received: from mail.homeinbox.net (86.162.232.62) by rgout01.bt.lon5.cpcloud.co.uk (8.6.122.06) (authenticated as medthomas@btinternet.com) id 56EAE55000011889 for users@tomcat.apache.org; Thu, 17 Mar 2016 17:36:23 +0000 Received: from localhost (localhost [127.0.0.1]) by mail.homeinbox.net (Postfix) with ESMTP id 50C04B40406 for ; Thu, 17 Mar 2016 17:36:23 +0000 (GMT) X-Virus-Scanned: Debian amavisd-new at homeinbox.net Received: from mail.homeinbox.net ([127.0.0.1]) by localhost (mail.homeinbox.net [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id DItKf0pVvIR1 for ; Thu, 17 Mar 2016 17:36:22 +0000 (GMT) Received: from [100.87.103.55] (unknown [213.205.198.215]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.homeinbox.net (Postfix) with ESMTPSA id 95F3EB401CE for ; Thu, 17 Mar 2016 17:36:22 +0000 (GMT) User-Agent: K-9 Mail for Android In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Subject: Re: Tomcat 8 Hung State From: Mark Thomas Date: Thu, 17 Mar 2016 17:36:23 +0000 To: Tomcat Users List Message-ID: <083ECCAE-11E9-459E-9FA4-CF251B616B72@apache.org> On 17 March 2016 16:13:28 GMT+00:00, Theo Sweeny wrote: >Hello - yesterday Tomcat 8 went into a hung state, because an external >API went offline. > > >Eventually the external service was restored but Tomcat was unable to >recovery from it. > > >When a new connection is sent to Tomcat the connection hangs as no >additional thread can be allocated to the new request. > > >Here is an example of the log - > > >17-Mar-2016 15:53:36.671 WARNING >[ContainerBackgroundProcessor[StandardEngine[Catalina].StandardHost[localhost]]] >org.apache.catalina.valves.StuckThreadDetectionValve.notifyStuckThreadDetected >Thread "http-nio-10180-exec-40" (id=422) has been active for 33,717 >milliseconds (since 3/17/16 3:53 PM) to serve the same request for >http://localhost:10180/retrieve-1.2/retrieve-prices and may be stuck >(configured threshold for this StuckThreadDetectionValve is 30 >seconds). There is/are 1 thread(s) in total that are monitored by this >Valve and may be stuck. > java.lang.Throwable > at sun.misc.Unsafe.park(Native Method) > at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186) > at java.util.concurrent.FutureTask.awaitDone(FutureTask.java:425) > at java.util.concurrent.FutureTask.get(FutureTask.java:187) >at >com.spring.application.repository.product.price.IlogPriceRepository.getPrices_aroundBody0(IlogPriceRepository.java:104) >at >com.spring.application.repository.product.price.IlogPriceRepository$AjcClosure1.run(IlogPriceRepository.java:1) >at >org.aspectj.runtime.reflect.JoinPointImpl.proceed(JoinPointImpl.java:149) >at >com.spring.framework.aspects.LoggingAspect.logMethodEntryAndExit(LoggingAspect.java:61) >at >com.spring.application.repository.product.price.IlogPriceRepository.getPrices(IlogPriceRepository.java:86) >at >com.spring.application.repository.product.price.IlogPriceRepository$$FastClassBySpringCGLIB$$142c62f1.invoke() >at >org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) >at >org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:717) >at >org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) >at >org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136) >at >org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) >at >org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:653) >at >com.spring.application.repository.product.price.IlogPriceRepository$$EnhancerBySpringCGLIB$$4fdb7af0.getPrices() >at >com.spring.application.service.product.price.RealTimePriceApplicationService.getPrices_aroundBody0(RealTimePriceApplicationService.java:48) >at >com.spring.application.service.product.price.RealTimePriceApplicationService$AjcClosure1.run(RealTimePriceApplicationService.java:1) >at >org.aspectj.runtime.reflect.JoinPointImpl.proceed(JoinPointImpl.java:149) >at >com.spring.framework.aspects.LoggingAspect.logMethodEntryAndExit(LoggingAspect.java:61) >at >com.spring.application.service.product.price.RealTimePriceApplicationService.getPrices(RealTimePriceApplicationService.java:47) >at >com.spring.application.service.product.price.GetPriceApplicationController.getPrices_aroundBody0(GetPriceApplicationController.java:74) >at >com.spring.application.service.product.price.GetPriceApplicationController$AjcClosure1.run(GetPriceApplicationController.java:1) >at >org.aspectj.runtime.reflect.JoinPointImpl.proceed(JoinPointImpl.java:149) >at >com.spring.framework.aspects.LoggingAspect.logMethodEntryAndExit(LoggingAspect.java:61) >at >com.spring.application.service.product.price.GetPriceApplicationController.getPrices(GetPriceApplicationController.java:70) > at sun.reflect.GeneratedMethodAccessor1306.invoke(Unknown Source) >at >sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:606) >at >org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) >at >org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137) >at >org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) >at >org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:777) >at >org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:706) >at >org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) >at >org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943) >at >org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877) >at >org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) >at >org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:868) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:648) >at >org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) >at >org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) >at >org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) >at >org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) >at >org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) >at >org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) >at >org.springframework.boot.actuate.autoconfigure.EndpointWebMvcAutoConfiguration$ApplicationContextHeaderFilter.doFilterInternal(EndpointWebMvcAutoConfiguration.java:291) >at >org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) >at >org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) >at >org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) >at >org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77) >at >org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) >at >org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) >at >org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) >at >org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:102) >at >org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) >at >org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) >at >org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) >at >org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) >at >org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) >at >org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) >at >org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) >at >org.springframework.boot.actuate.autoconfigure.MetricFilterAutoConfiguration$MetricsFilter.doFilterInternal(MetricFilterAutoConfiguration.java:90) >at >org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) >at >org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) >at >org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) >at >org.springframework.boot.context.web.ErrorPageFilter.doFilter(ErrorPageFilter.java:108) >at >org.springframework.boot.context.web.ErrorPageFilter.access$000(ErrorPageFilter.java:59) >at >org.springframework.boot.context.web.ErrorPageFilter$1.doFilterInternal(ErrorPageFilter.java:88) >at >org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) >at >org.springframework.boot.context.web.ErrorPageFilter.doFilter(ErrorPageFilter.java:101) >at >org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) >at >org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) >at >org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) >at >org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) >at >org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) >at >org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142) >at >org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) >at >org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610) >at >org.apache.catalina.valves.StuckThreadDetectionValve.invoke(StuckThreadDetectionValve.java:208) >at >org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) >at >org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518) >at >org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091) >at >org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668) >at >org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:223) >at >org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1517) >at >org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1474) >at >java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) >at >java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) >at >org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) > at java.lang.Thread.run(Thread.java:745) > > >Are there any ideas as to why Tomcat is unable to free up its threads? That is an application problem. Nothing to do with Tomcat code. Once a thread enters application code Tomcat has no control over it. Mark --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org For additional commands, e-mail: users-help@tomcat.apache.org