Tomcat이 느리게 작동되는 경우는 매우 다양하지만 대부분의 환경을 모두 잘 셋팅하고 정리해놨는데도 불구하고 이상하리만치 느리게 로드가 되는 경우가 있다.
대표적인 증상으로는 tomcat을 startup 시키고 난 후 netstat -ntl 로 포트를 확인해보면 8005번 포트가 안올라오는 상태이다.
이 경우 shutdown을 해도 (서버가 실행된 상태가 아님) 이라는 오류 메세지를 뱉어내는데 ps -ef | grep tomcat 으로 프로세스를 검색하면 톰캣은 여전히 돌아가고 있는 상태이다.
일단 이 현상이 발생된 환경은 gabia의 g클라우드 서버에서 Ubuntu 16.04 이미지를 사용할 떄 발생이 되었다. 커널도 4.4.0으로 로컬에서 테스트 했을때와 같은데 왜 톰캣 로드가 이곳에서만 느린것인지 도대체 알길이 없다.
일단 해결을 하긴 하였는데
sudo apt-get install haveged
위 명령어로 haveged 패키지를 설치하면 문제는 말끔히 해결이 된다.
linux의 entropy가 낮을 경우 /dev/random에 락이 걸려서 현저하게 퍼포먼스가 저하되는 것인지는 모르겠으나 해당 패키지는 이 문제를 해결하기 위한 패키지이므로 추정을 해보자면 제공되는 이미지의 어떠한 문제로 인하여 급격하게 엔트로피가 사라지게 되어 결국 /dev/random을 사용하는 부분에서 락이 걸려 로드가 지연되는 현상이 발생된 것 같다.
정확한 이유는 좀 더 찾아봐야겠으나 tomcat 자체의 버그는 아니고 gabia에서 제공되는 이미지 자체 혹은 클라우트 서버환경에서 I/O 쪽에 문제가 좀 있는것 아닌가 한다.
먼저 패키지를 설치하기 전에 다음 명령어를 통하여 현재 entropy를 확인한다.
cat /proc/sys/kernel/random/entropy_avail
결과치가 1000 이하일 경우 haveged를 설치할 것을 권장하고 있다.
'Snippets' 카테고리의 다른 글
[Docker] Ubuntu 16.04를 설치했을 때 필요한 패키지 설치 (0) | 2017.04.18 |
---|---|
[Eclipse] 단축키 모음 (0) | 2017.04.11 |
크롬 주소창에서 자동완성된 URL 한개씩 삭제하기. (0) | 2017.03.30 |
Ubuntu 16.04 Nvidia 드라이버 설치 후 무한 로그인 될 경우 (0) | 2017.02.23 |
Maven으로 excutable jar 빌드 (0) | 2016.11.17 |