golang
-
http.ListenAndServe 와 http.Server 차이golang 2024. 11. 14. 18:30
위 두개 차이점을 아는가?난 모른다. 오늘 코드 볼게 있어서 이해가 안되는 부분 지피티랑 수다좀 떨었는데http.ListenAndServe, http.Server 차이를 알게 되어버렸다. 나는 http.ListenAndServe 이걸 통해서 서버 띄우곤 했는데 이것만 쓰면 graceful shutdown 을 구현하지 못한다근데 솔직히 graceful shutdown 이 중요한지 아직 모르겠음 go 루틴으로 http.ListenAndServe 를 써서 서버 띄우고channel 열어서 os.Interrupt 감지하고 있게 하고감지 되면 server.Shutdown 으로 종료 시키면 이것이 바로 graceful shutdown 임 안전하게 종료시키는거 중요한데아직 느껴본적이 없어서 와닿진 않음
-
언제 끝날지 모르는 goroutine 금지golang 2024. 11. 12. 17:58
golang 에서 비동기 처리에 goroutine 을 사용하곤 한다.다른 언어를 깊게 사용해 보진 않아서, 분명 더 쉽게 비동기 처리를 할 수 있는 언어도 있겠지만goroutine 은 상당히 간단하고 강력하다. 백엔드 서버에서도 사용하고 있고, 클러스터 지표 수집기에서도 잘 사용하고 있다.근데 문제가 발생하는데..! 클러스터 지표 수집기쪽에서 문제가 생겼는지 그라파나에서 그래프가 일직선으로 나타나기 시작했다. 처음엔 그라파나 문제인가 싶어서 보는데, 문제가 없었고 지표 수집기를 다시 실행해 보면서 로그를 확인해 보니 문제를 찾을 수 있었다. 데이터 노드 jmx 로 보낸 요청 응답이 오지 않아 그랬던 것이었다.(jmx 에 타임아웃이 설정되어 있지 않나? 아님 서버 자체가 죽어서 그랬던 것이었을 수도 있다...