Gerrit 메모리 릭 우회하기
코드 리뷰 도구로 gerrit을 사용 중이다.
5월 말?쯤에 gerrit-2.6.x-rc? 로 올렸는데 이 때 부터 문제가 생기기 시작했다. 해당 머신에 할당한 메모리에 따라 다르지만, 대략 3일~일주일 후면 heap 공간이 꽉차서 GC하느라 반응이 없거나, 아니면 아예 OOM으로 죽거나. 그래서 포기하고 crontab에서 아예 restart 하게 수정 (이건 실제로 작업하는 시간대가 명확해서 가능한거고 분산된 팀이면 적용하기 괴로울 듯)
Gerrit 메일링 말고 다른 쪽에서 검색한 바로는 apache sshd의 세션이 제대로 안 날아가서 생기는 문제라는 얘기도 있던데 여하간 해결이 난망해 보였음. (2.6 올라갈 때 Apache MINA sshd에 대한 의존성이 수정됨)
Gerrit 2.7-rc도 동시에 나오기 시작해서 그 쪽으로 올려도 봤는데 소용이 없더라.
며칠 전에 gerrit 2.7이 정식으로 릴리즈 되었고, 버전 올린김에 issue tracker를 보다가 최근에 다른 사람이 올린 issue를 발견.
우회책도 제시되었다: https://gerrit-review.googlesource.com/#/c/44351/ sshd의 idleTimeout을 작은 값 (예시는 5분) 으로 바꾸라는 것.
서비스 중인 버전을 2.7 (released)로 바꾼 뒤에 한 거라 명확하진 않지만 역시나 이쪽 메모리 문제도 이걸로 잡힌 것 같다. (이 때 쯤엔 아예 포기하고 매일 새벽에 gerrit daemon restart를 걸어놓은 상태)
일단 heap 사용량이 안정적이 된 듯 하니 앞으로 한동안은 잊고 있어야겠다 (?).