서버가 왜 통째로 죽었었나

아주 쉽게, 그림으로

백그라운드 브라우저가 토큰을 가져오는 작업 중이었다
예외가 나도 무조건 닫히게 고쳤다
더 보기
🤖💥막힘🩹풀림🔁지금
백그라운드 브라우저가 토큰을 가져오는 작업 중이었다
중간에 예외가 나면 브라우저를 안 닫는 버그가 있었다. 크롬 프로세스가 고아로 계속 쌓였고, 912MB짜리 작은 서버가 스왑 2GB까지 차서 서비스가 통째로 다운됐다(부하 17.87 실측). 15분간 12번 재시작을 반복하며 스스로를 더 망가뜨렸다.
🔒✂️
예외가 나도 무조건 닫히게 고쳤다
try/finally로 감싸 browser.close()가 항상 실행되게 했다. '완전히 조용해질 때까지 기다리기' 방식도 이 사이트에선 절대 안 끝나는 조건이라 '본문만 로드되면 진행'으로 바꿨다. 수정 후 재발은 없었다.
한 줄로: 서버 다운은 예외 시 브라우저를 안 닫는 버그가 재시작 악순환을 일으킨 사고였고, try/finally 수정 이후 재발하지 않았다.

출처: git commit 9af70cee (fix(liv-pulse): try/finally로 브라우저 leak 방지)