도리안의 개발 이야기 #16 - 톰캣 서버가 죽는다는 문제
본계정 @dorian-lee의 일기에서 이어지는 내용인데요. 저녁에 고객사로부터 서버가 죽었다는 연락을 받았습니다. 앱으로 접속을 시도해보았으나 서버의 응답이 없어 급히 톰캣을 재시작했습니다. 이후 서버는 잘 돌아갑니다. 문제는 공휴일이었던 지난 1일(신정)에도 서버의 응답이 없다는 연락을 받았다는 점입니다. 원래는 2일에 원인을 바로 분석해야 했지만, 이번 주까지 마쳐야 할 작업이 많아서 이를 마친 후 보려고 했습니다. 그러나 3일만에 서버 문제가 터지고 말았네요.
서버 로그는 밤 9시가 지나서야 보기 시작했습니다. 그 전까지는 이미 계획된 일들을 하고 있었지요. 로그를 보면서 발견한 키워드는 java.lang.OutOfMemoryError였습니다. 힙의 여유 공간이 부족해져 서버가 작업을 더 진행할 수 없었던 것입니다. 톰캣의 힙 최대 공간을 늘리면 된다는 어드바이스가 있는데, 과연 그것만으로 문제가 해결될지는 아리까리 했습니다. 대표님과 이사님이 논의한 끝에 힙 최대 공간은 1GB에서 4GB로 늘리기로 결정되었습니다. 그 외 메모리를 많이 잡아먹는 코드가 무엇인지 찾아야 하는 과제가 남았네요. 이번에는 시간이 없어 그거까지는 어렵고 이번 앱, 서버 업데이트가 완료되면 검토해야 합니다.
힙 공간을 늘리기 위해 톰캣의 catalina.sh 파일을 수정했지만, 이를 적용하려면 톰캣을 재시작해야 합니다. 이 시간에도 여전히 사용자가 많아서 재시작은 아침 시간이 제일 적절하죠. 새벽 6시에 서버를 재시작하기로 했습니다. 시간이 없어 이번 글은 여기까지만 씁니다. 잠 자는 것도 전투적이네요. ㅎㅎㅎㅎㅎㅎㅎㅎ
짱짱맨 호출에 응답하여 보팅하였습니다.
톰캣 메모리를 4배로 늘렸네요. 톰캣은 너무 잘
죽어용. 그런데 로드밸런스는 적용 안되어있나봐요?
전 그동안 앱이랑 API 개발만 해와서 서버 관련 운영, 인프라쪽은 아는 게 없네요. 이번 기회에 배워야 할 거 같아요.
서버 개발자가 서버 관리와 인프라까지 해야하는 상황이군요. ㅋ
배워서 해야한다고 생각하니 힘들것 같습니다. ㅠㅠ
서버 개발자가 서버 관리, DB 관리, 인프라까지 담당해야할 때,
저는 가끔 클라이언트(안드로이드, 아이폰) 개발자가 부러울때가 있었습니다.
그래서 클라이언트 개발자로 전향하려다가 실패하면,
이것 저것 다하게 되는 깊이가 없는 잡다한 개발자가 되는 겁니다. ㅠㅠ