현상
5, 10, 15 분 만에 계속 1초만에 CPU 가 100% 를 쳐버립니다.
톰캣이 죽지는 않고 RDS(DB) 쪽 도 정상입니다.
톰캣을 ./shutdown.sh 시켜도 우분투에서 쓰레드를 강제종료 시켜야 다시 ./startup.sh 을 시킬수 있고
곧 5, 10, 15분 안에 1초 만에 CPU 를 100% 쳐서 앱이 뻗어버립니다.
현재 API 서버로 사용중이며 앱 런칭 하자마자 이런 현상이 발생하고 있습니다.
개발 환경
플랫폼 : AWS
OS : ubuntu 14.04 LTS
CLass : i2.xlarge ( 4vCPUs, 30.5 Memory(GiB), 1 x 800 (SSD) )
JDK : java version - 1.8.0_111
WAS : tomcat 7.0.73
JAVA, Maven, RESTfull API 방식.
aurora DB ( db.r3.xlarge - 3 vCPU, 30.5 GiB Ram )
설정환경
$TOMCAT_HOME/conf/server.xml
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" minSpareThreads="10"
maxThreads="500" acceptCount="100" maxConnection="90000" redirectPort="8443" />
$TOMCAT_HOME/bin/catalina.sh
JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m -XX:MaxPermSize=512m -XX:+DisableExplicitGC"
2개의 의견 from SLiPP
그렇게 빠른 시간내에 cpu 100%를 치는 경우는 대부분의 특정 로직에서 무한 루프에 빠질 수 있는 코드가 있는지 한번 확인해 보시죠. 또한 DB Connection도 정상적으로 close하는지도 확인해 보시고요.
너무 빠르게 cpu 100%를 치니 일단 위 두 가지 상황이 좀 의심이 되네요.
스레드 덤프 분석하기와 같은 문서 참고해서 thread dump도 뜨고 분석해 보는 것도 좋은 연습이 될 것 같네요.
의견을 남기기 위해서는 SLiPP 계정이 필요합니다.
안심하세요! 회원가입/로그인 후에도 작성하시던 내용은 안전하게 보존됩니다.
SLiPP 계정으로 로그인하세요.
또는, SNS 계정으로 로그인하세요.