Tomcat기동 시 JVM java security urandom 이슈

현상

Tomcat기동 시 1시간 이상 지연이 발생함(Windows 2014/ Tomcat 8)

원인

Linux서버는 Thread Pool 할당, Connection Pool 사용등에 난수값을 사용하는데, 이때 난수값을 가져오는데 /dev/random 디바이스를 사용함

  • Linux의 /dev 디렉토리는 시스템 디바이스 파일을 저장하는 디렉토리
  • 예를들어 하드디스크는 /dev/sda, 씨디롬은 /dev/cdrom

/dev/random은 랜덤 비트의 풀이며 Entropy pool 이라고 부름

사용자 입력 신호(키보드, disk I/O, 마우스 클릭등)가 Entropy pool에 비트의 형태로 저장이 되고 난수를 생성할 때 Entropy pool에 default size만큼 bit가 충분하지 않다면 /dev/random은 블로킹 됨

해결방법

JAVA_OPTS에 옵션추가

JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/./urandom"

참고 : https://lng1982.tistory.com/261