공부하고 기록하는, 경제학과 출신 개발자의 노트

프로그래밍/이것저것_개발일지

Tomcat 서버 구동시 Creation of SecureRandom instance for session ID generation Warning 해결

inspirit941 2020. 11. 3. 09:35
반응형

빈 리눅스 / 우분투 인스턴스에서 Spring Boot 웹 애플리케이션을 runnable Jar파일로 구동할 때 마주한 오류.

Exception처럼 프로그램이 종료되는 것도 아니고, 애플리케이션 로직에도 문제는 없지만

서버에 요청을 보냈을 때 응답을 받기까지 매우 오랜 시간이 걸리는 상황이 발생했다.

 

Creation of SecureRandom instance for session ID generation using \[SHA1PRNG\] took \[43,222\] milliseconds.

 

요청에서 응답까지 43초가 걸렸다. 다른 요청에서는 213초까지 걸리기도 했다.

 


원인을 분석한 포스트를 여러 개 찾아봤다.

 

https://goni9071.tistory.com/entry/connection-reset

https://goni9071.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4-devrandom-vs-devurandom

 

리눅스 /dev/random vs /dev/urandom

/dev/random 위키의 정의 : 유닉스 계열 운영 체제에서 차단 방식의 유사난수 발생기의 역할을 수행하는 특수 파일이다. 장치 드라이버와 기타 소스로부터 모은 환경적 노이즈로의 접근을 허용한다

goni9071.tistory.com

https://allthatlinux.com/dokuwiki/doku.php/tomcat_%EA%B5%AC%EB%8F%99%EC%8B%9C_%EC%98%A4%EB%9E%98%EA%B1%B8%EB%A6%AC%EB%8A%94_%ED%98%84%EC%83%81_%ED%95%B4%EA%B2%B0

 

https://lng1982.tistory.com/261

 

tomcat 구동 시 /dev/random 블로킹 이슈

[현상] 새로 지급 받은 리눅스 신규 장비에 java, tomcat 환경 구성을 하고 tomcat 구동 시 대기 상태로 빠지는 현상이 있었다. 특이한 점은 몇 분 지나면 tomcat 구동이 완료되는 경우와 몇 십 분이 지나

lng1982.tistory.com

https://bugs.java.com/bugdatabase/view_bug.do?bug_id=6202721

 

Bug ID: JDK-6202721 SHA1PRNG reads from /dev/random even if /dev/urandom selected

 

bugs.java.com

 

요약하자면

 

자바는 Connection을 생성하기 위해 자바의 랜덤난수 생성을 활용하는데,

랜덤난수를 생성하기 위한 인자값으로 "기존 하드웨어의 노이즈"를 사용한다고 함.


따라서 신규 인스턴스에 새로 서버를 만들면, 랜덤난수를 생성에 필요한 인자값이 부족해서 발생할 수 있는 문제라고 한다.

난수 생성을 담당하는 /dev/random을 /dev/./urandom 으로 변경하면 해결할 수 있다.

 

 

JVM 옵션에서

-Djava.security.egd=file:/dev/./urandom

을 주거나,

 

jar 파일로 실행할 경우

java -Djava.security.egd=file:/dev/./urandom -jar jar파일명.jar

옵션을 주어 실행하면 된다.

반응형