0
2コアのawsに展開されたtomcatでJava Webアプリケーションを実行しています。問題は、2〜3日後に両方のCPUコアが100%のCPU使用率に固執し、アプリケーションが非常に遅くなることです。 cpuが100%スタックしたときに10秒間隔でtomcatの3つのスレッドダンプを取ることで、問題の原因となっている2つのスレッドが見つかりました。ここにスタックトレースがあります。cpuコアが100%CPU使用率でスタックされている
Thread 1 :
http-bio-8080-exec-10 - priority:10 - threadId:0x00007fda4005a800 - nativeId:0x526e - state:RUNNABLE
stackTrace:
java.lang.Thread.State: RUNNABLE
at org.apache.coyote.http11.AbstractInputBuffer.nextRequest(AbstractInputBuffer.java:229)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1110)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313)
- locked <0x00000000f4102c60> (a org.apache.tomcat.util.net.SocketWrapper)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
2nd thread :
http-bio-8080-exec-3 - priority:10 - threadId:0x00007fda24096800 - nativeId:0x524e - state:RUNNABLE
stackTrace:
java.lang.Thread.State: RUNNABLE
at org.apache.coyote.http11.AbstractInputBuffer.nextRequest(AbstractInputBuffer.java:229)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1110)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313)
- locked <0x00000000f4102ca0> (a org.apache.tomcat.util.net.SocketWrapper)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
この問題を解決する方法。