본문 바로가기

Snippets

Ubuntu에서 tomcat이 느리게 로드 될 때

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

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를 설치할 것을 권장하고 있다.