본문 바로가기

go4

Go pprof를 사용한 어플리케이션 OOM 이슈 분석기 이슈 발생 Go 어플리케이션 중 하나가 갑자기 Out Of Memory가 발생하여 서비스가 죽고 CPU 사용량도 max를 치면서 서버에 hang이 걸려 서버 접속도 하지 못하는 이슈가 발생했다. 서버와 어플리케이션을 모두 재시작했으나 동일한 이슈가 반복되어 일단은 4C/16GB 인스턴스로 scale-up 하여 임시방편으로 문제를 해결하고 원인을 파악하고자 했다. (기존 인스턴스 스펙 : 2C/8G) 빈번하게 배포하는 상용 서비스가 아니었고 만약 memory leak이었다면 재시작했을 때는 문제가 없었어야 하므로, 실행중이던 작업에 문제가 있다고 판단하여 go pprof를 사용해 프로파일링을 진행하기로 했다. 해당 서비스는 미디어 파일을 CDN에 업로드 하는 기능과 이미지 파일을 분석한 후 CDN에 .. 2025. 4. 11.
[AWS Mediaconvert] go SDK 로 mediaconvert job 실행하기 https://docs.aws.amazon.com/sdk-for-go/api/service/mediaconvert/ mediaconvert - Amazon Web Services - Go SDK docs.aws.amazon.com 이전 글에서 만들었던 Encrypted HLS 템플릿을 활용하여, go SDK로 템플릿을 호출하여 mediaconvert job을 실행시켜보자. 2022.10.09 - [프로그래밍/ETC] - [AWS Mediaconvert] 암호화된 HLS 생성하기 [AWS Mediaconvert] 암호화된 HLS 생성하기 AWS Mediaconvert AWS Elemental MediaConvert는 파일 기반의 비디오 및 오디오 트랜스코딩 서비스이다. 이 서비스를 사용하면 브로드캐스트와 .. 2022. 10. 15.
[채팅-2] go elastic search client 개인 프로젝트로 go를 사용한 채팅 프로그램을 만들었다. 아래 블로그를 참고하였고, 필요한 부분은 수용하고 나와 맞지 않는 부분은 수정하여 프로젝트에 적용해보았다. thebook.io/006806/ch09/01/ Go 언어 웹 프로그래밍 철저 입문: 9.1 채팅 애플리케이션 만들기 thebook.io 프로젝트에서 사용한 주요 기술 및 언어 서버 : golang 회원 정보 관리 : mysql 채팅방, 메세지 정보 관리 : elastic search, kibana 서버에서 사용한 외부 오픈소스 라우터 : github.com/julienschmidt/httprouter 미들웨어 : github.com/urfave/negroni 뷰(렌더링) : github.com/unrolled/render 세션 : githu.. 2021. 4. 29.
[golang] 포인터와 주소값 golang 에서 flag 포인터와 주소값을 사용하게 되었는데, 기본적인 건데도 개념이 확실하게 잡혀있지 않다보니 계속 헷갈렸다. 이 기회에 쉬운 예시를 통해서 확실하게 정리해보기로 했다. 변수를 선언하면 그림과 같이 메모리의 한 부분을 할당하여 선언한 값을 저장하고, 값이 저장된 공간 주소를 가지게 된다. func main() { var word = "Hello" } word 를 선언한 경우, 그림1처럼 주소 0000이라는 곳에 "Hello" 라는 string 값이 저장이 된다. 즉, 변수마다 고유의 주소를 할당받게 되는 것이다. 주소값(&)은 word의 "Hello" 가 아니라 그 주소값을 가져올 수 있다. func main() { var word = "Hello" fmt.Println(word, &.. 2020. 1. 27.