티스토리 뷰
64bit 리눅스 시스템에서 프로그램을 개발하다 만난 희안한 에러다.
옆에 실행중인 sqldeveloper는 잘 되는데 테스트중인 프로그램은 connection reset이 발생한다.
어쩔때는 잘되고 어쩔대는 안되고 안되면 참 안된다. 계속 안된다. 잘되면 그냥 잘된다.
원인을 찾을 수가 없었다. 랜덤이다. 버그가 랜덤이다.
원인은... random 때문이었다.
/dev/random, /dev/urandom, 리눅스에서는 위 두 장치로 랜덤을 발생시키기 위해 키보드, 마우스 같은 io 장치의 노이즈를 수집해서 비트 연산한다고 한다. 전자는 고른 난수를 발생 시킬 수 있어 보안에 강하지만 속도가 느리고 후자는 보안이 취약하지만 속도가 빠르다고 한다.
자바 기본설정은 /dev/random을 사용한다. 이 설정은 jdk/jre/lib/security/java.security 파일을 열어보면 중간에
securityrandom.source=file:/dev/random
이라고 되어 있다.
결론을 말하면.. connection을 얻는 과정에서 /dev/random을 사용하고 /dev/random은 재대로 작동 안했다는거다.
위에 라인을 /dev/urandom으로 바꾸고 문제를 해결했다.
만약 서버급이라면... 이 방법은 좋은 해결 방법이라고 볼 수 없을 것긴하다. io 디바이스가 안달려있는 서버는 더 큰 문제일것 같긴하지만 어짜피 connection을 많이 안만들테니....
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 단축어
- ThumbFish
- 블로그 업데이트
- pg_upgrade
- GPT3
- marvin
- Synergy
- Shortcuts
- 안타까움
- 저금
- ChatGPT
- IDE
- xe
- Deep Learning
- commons-fileupload
- OpenAI
- gpt4
- postgresql upgrade
- machine learing
- 벗꽃축제
- 해약
- ruby
- 소화불량
- 창준이 득남
- 피곤한 휴일
- java
- source
- 시리
- netbeans
- rapidminer
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함