[Go] Prometheus 대시보드를 활용한 메트릭 분석 가이드
·
Language/Go
~Go 프로파일링 적용 시리즈 - 배치 서버 ver.~[1] 배치 서버 OOM 분석을 위한 메트릭 설계와 프로파일링 전략[2] Prometheus 라이브러리를 활용한 Go 메트릭 구현[3] Prometheus 대시보드를 활용한 메트릭 분석 가이드🟨 OOM 발생 시나리오 분석OOM 발생 원인을 찾기 위해 다음 시나리오를 고려해볼 수 있습니다.▫️ 시나리오 1 : 순간적인 메모리 급증아주 짧은 순간에 발생하는 메모리 급증 시나리오입니다. 평소에는 메모리 사용량이 낮다가, 특정 순간에 시스템이 감당할 수 없을 만큼 한꺼번에 많은 메모리를 OS에 요청할 때 발생합니다. 예를 들어, 특정 작업을 위해 수백 개의 고루틴을 띄우는 순간이 있습니다.Prometheus는 보통 수 초~ 수십초(scrape interva..
[Go] Prometheus 라이브러리로 Go 애플리케이션 프로파일링 하기
·
Language/Go
보호되어 있는 글입니다.
[Go] 배치 서버 OOM 분석을 위한 메트릭 설계와 프로파일링 전략
·
Language/Go
보호되어 있는 글입니다.
[Go] Context에 관한 고찰 - 3 : Graceful Shutdown의 미학
·
Language/Go
~Go Context 시리즈~[1] Context에 관한 고찰 - 1 : Context 란[2] Context에 관한 고찰 - 2 : Context의 중요성과 고루틴 누수[3] Context에 관한 고찰 - 3 : Graceful Shutdown의 미학이전 시리즈에서 우리는 Context가 무엇이고 Context를 이용해 개별 작업의 생명 주기를 어떻게 제어해야 좀비 고루틴을 방지할 수 있는지 살펴보았다. 이제 마지막으로, Context가 애플리케이션 전체의 생명주기를 어떻게 관장하며 ~우아한 종료~ 라는 현대 서버 애플리케이션의 필수 덕목을 구현하는지 살펴보려고 한다. 우아한 종료는 단순히 서버를 끄는 행위를 넘어, 시스템의 안정성과 데이터의 정합성을 보장하는 섬세한 오케스트라 지휘와 같다. 그리고 그..
[Go] Context에 관한 고찰 - 2 : Context의 중요성과 메모리 누수
·
Language/Go
~Go Context 시리즈~[1] Context에 관한 고찰 - 1 : Context 란[2] Context에 관한 고찰 - 2 : Context의 중요성과 고루틴 누수[3] Context에 관한 고찰 - 3 : Graceful Shutdown의 미학Context가 중요한 이유Context의 중요성을 간과하고 context.Background()를 남발하는 코드는 당장에는 문제없이 동작하는 것처럼 보일 수 있다. 이는 마치 브레이크 없는 자동차로 텅 빈 직선 도로를 달리는 것과 같은데, 장애물이 나타나거나(에러 발생), 교차로에서 멈춰야 하거나(요청 취소), 주차해야 할 때(서버 종료) 비로소 재앙이 시작된다...후후... (그나저나 AI 비유법 기깔난다..ㅋㅋㅋㅋ 다시 돌리려다가 웃겨서 그냥 가져옴)..
[Go] WaitGroup vs ErrGroup 비교
·
Language/Go
우선 간단하게 내용만 정리하고 나중에 뼈와 살을 보충 예정입니다. 요약특징sync.WaitGrouperrgroup.Group목적여러 고루틴이 완료될때까지 기다리기여러 고루틴이 완료될때까지 기다리되, 오류 처리와 작업 취소를 통합 관리오류 처리내장 기능 없음.오류를 전달하려면 별도의 채널(channel) 등을 직접 구현 필요내장 기능 있음.Wait() 메서드가 가장 먼저 발생한 error를 반환작업 취소내장 기능 없음.context.Context를 직접 전달하고 관리해야함.errgroup.WithContext를 통해 자동 취소 기능 제공코드 복잡성단순하지만, 오류/취소 처리를 추가하면 코드가 복잡해짐기능이 많지만, 오히려 코드는 더 간결하고 명확해짐패키지 위치syncgolang.org/x/sync/errg..