□ Valve
Valve(バルブ)。ぱっと見、Valueかと思った* 親コンポーネントへのリクエストをフィルタし、処理を行う
参考文献
https://thinkit.co.jp/free/article/0708/2/8?page=0%2C1■ Stuck Thread Detection Valve
org.apache.catalina.valves.StuckThreadDetectionValve (From Tomcat7)* 長時間処理しているリクエストを検知する
設定例
<Valve className="org.apache.catalina.valves.StuckThreadDetectionValve" threshold="5" />
`属性 | `説明 | 備考 |
className | 「org.apache.catalina.valves.StuckThreadDetectionValve」を設定 | |
threshold | 閾値[秒]。「0」なら非活性。 | デフォルト:600[秒]。backgroundProcessorDelayよりも大きい方がいい |
interruptThreadThreshold | 中断する際の閾値[秒]。「-1」なら非活性。 | interruptThreadThreshold >= thresholdにする必要有 |
<html> <body> Sleep... <% Thread.sleep(15000); %> <hr> </font> </body> </html>出力結果例 / catalina.YYYY-MM-dd.log
21-Jan-2018 21:49:36.219 警告 [ContainerBackgroundProcessor[StandardEngine[Catalina]]] org.apache.catalina.valves.StuckThreadDetectionValve.notifyStuckThreadDetected Thread [http-nio-8080-exec-8] (id=[35]) has been active for [11,913] milliseconds (since [18/01/21 21:49]) to serve the same request for http://127.0.0.1:8080/examples/jsp/longsleep.jsp and may be stuck (configured threshold for this StuckThreadDetectionValve is [5] seconds). There is/are [1] thread(s) in total that are monitored by this Valve and may be stuck. java.lang.Throwable at java.lang.Thread.sleep(Native Method) at org.apache.jsp.jsp.longsleep_jsp._jspService(longsleep_jsp.java:113) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:444) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329) at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:475) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) at psiprobe.Tomcat90AgentValve.invoke(Tomcat90AgentValve.java:40) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80) at org.apache.catalina.valves.StuckThreadDetectionValve.invoke(StuckThreadDetectionValve.java:206) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:651) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:498) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:796) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1374) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:744) 21-Jan-2018 21:49:46.246 警告 [ContainerBackgroundProcessor[StandardEngine[Catalina]]] org.apache.catalina.valves.StuckThreadDetectionValve.notifyStuckThreadCompleted Thread [http-nio-8080-exec-8] (id=[35]) was previously reported to be stuck but has completed. It was active for approximately [15,790] milliseconds.
公式サイト
[[http://tomcat.apache.org/tomcat-8.5-doc/config/valve.html#Stuck_Thread_Detection_Valve]]参考文献
http://benzaiten.dyndns.org/roller/ugya/entry/tomcat7-hanguphttps://qiita.com/tamura__246/items/dae31a6a7e24c756b756
http://d.hatena.ne.jp/Kazuhira/20121014/1350217927
http://se-bikou.blogspot.jp/2017/06/tomcatstuckthreaddetectionvalve.html
■ Error Report Valve
* HTTPエラー時のエラーページの設定
公式サイト
[[http://tomcat.apache.org/tomcat-8.5-doc/config/valve.html#Error_Report_Valve]]参考文献
http://www.tec-q.com/note/2007/03/tomcat.html■ Access Log Valve
* アクセスログを出力する * デフォルトで既に追加されている
公式サイト
[[http://tomcat.apache.org/tomcat-8.5-doc/config/valve.html#Access_Log_Valve]]参考文献
http://www.m-bsys.com/code/tomcat-accesslog関連記事
* 以下の関連記事の「■ Tomcatのアクセスログの処理時間を出力するには」を参照のこと。https://blogs.yahoo.co.jp/dk521123/33222763.html