API 서버 CPU 100% 치고 뻗는 이유를 모르겠어요..

2016-12-23 10:55

현상

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

2016-12-23 12:23

그렇게 빠른 시간내에 cpu 100%를 치는 경우는 대부분의 특정 로직에서 무한 루프에 빠질 수 있는 코드가 있는지 한번 확인해 보시죠. 또한 DB Connection도 정상적으로 close하는지도 확인해 보시고요.

너무 빠르게 cpu 100%를 치니 일단 위 두 가지 상황이 좀 의심이 되네요.

의견 추가하기