개발자
안녕하세요. 자바 기반으로 개발을 하고 있는 벡엔드 개발자입니다. 개발을 하면 할 수록 뭔가 좀 그런거 같아서 한 번 질문드려봅니다. 최근 저희 회사에서 자바 기반으로 모니터링 관제가 만들어졌는데요. 해당 모니터링 관제 내용을 보면 jvm내에서 힙 메모리 사용량, 쓰레드 갯수, 상태, minor(major) gc pause avg(max) time 등등 자바 애플리케이션의 하나하나 세세한 부분까지 해서 볼 수 있는 모니터링이라고 보시면 될 거 같은데요. 처음 나왔을때 보니까 뭔가 신기해 보이긴했는데, 이걸 통해서 좀 더 안정적인 서비스를 만드는데 도움준다는 것은 동의합니다. 한 서비스 내에 여러 부분에(쓰레드 갯수, 혹은 상태) 기준이 있는데 기준이 넘어가면 위에서 지적을 하게 됩니다. 다만 처음에만 그렇지 이게 시간이 지날수록 힘든 것보다는 좀 답답하다는 느낌이 들더라구요. 여러가지 중에 하나는 이상수치에 관한 기준입니다. 예를 들면 minor gc를 하게 되면 일시적으로 애플리케이션이 멈추게 되잖아요.(stop-the-world) 그 시간이 100ms 이상이면 이상이 있다고 알람이 울리거든요. gc pause time이 100ms가 넘어가고, 그게 지속적으로 쭉 유지가 되는 부분인거라면 애플리케이션 기능,규모 혹은 트래픽 상태에 다를 수도 있겠지만 상황에 따라서는 이상이 있다고 판단할 수도 있다고 생각합니다. 그런데 제가 생각하기에는 애플리케이션 기능, 규모, 혹은 트래픽 상태 이런 여러 가지를 고려하면서 기준점을 잡아야 하는데, 위에서 어떤 애플리케이션 관계없이 무조건 100ms 넘기면 안돼 이래버리니 이게 맞나 싶습니다. 심지어 트래픽 때문에 일시적(1~2초정도)으로 살짝 넘어간 상태에서 수치가 내려갔는데도 (이런 추이도 하루에 한 번정도), 위에서는 애플리케이션이 이상이 있다고 판단을 해버리고(물론 엔드포인트 단에서는 잘 동작하고, 이거 관련해서 고객쪽에서 이슈 요청된 적이 한번도 없습니다.), 여지껏 정상적으로 쭉 동작하고 있었는데도 그런 모니터링 수치로 인해 리펙토링을 몇번씩 했던거 같거든요. 물론 같은 시간/패턴/수치로 알람이 계속적으로 울리게 된다면 의심정도는 하고 추후에 이상징후가 더 심해지면 개선을 하는거면 이해를 하는데, 그런상황은 아니라서 뭔가 불필요한 리소스를 계속 쓰는 듯한 느낌이 듭니다. 그래서 이 부분에 대해서 위에 보고를 했는데, 지금 이렇게 알람 울리니까 알람 안 울리겠끔 개선해라라는 식입니다. 사실 저는 해당 모니터링 자체가 제대로 로깅을 하고 있는지도 의심이 갈 정도이긴 합니다. (사실 그런게 한두가지가 아니긴 하지만 여기서 말하기는 길기에 생략하겠습니다.) 어떤 근거로 인해 기준을 잡고 까다롭게 모니터링을 하는거면 이해를 하겠는데, 솔직히.. 잘 모르겠습니다. 혹시 다른 회사에서는 모니터링을 어떻게 체크를 하는지, 혹은 원래 저렇게 고정된 기준을 가지고 모니터링을 관리하는지가 궁금합니다.
답변 0
첫 답변을 기다리고 있어요.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!