본문 바로가기

반응형

개발 노트/Go

(2)
[Golang] go 1.18 Released (generics) 드디어 Golang 에 generics (Templates for C++) 기능이 추가되었다. golang 은 기본적으로 최소한의 keywords 로 complile 성능과 실행 성능을 높이기 위해 다른 언어에서 사용하는 다양한 개념들을 일부러 많이 포함시키지 않았다고 하는데, 이번 go 1.18 릴리즈에 template 기능이 추가되었다고 한다. 사용법을 익히기 위해, golang 에서 제공하는 generics tutorial 에 대해 정리해보려 한다. 기존 함수 golang 은 strictly typed language 이기 때문에 go 1.18 미만 generics 이 없던 버전에서는 동일한 기능의 함수더라도 입력 인자 인자와 함수 이름을 다르게 선언해 주어야 했다. 1. main.go 파일 작성 ..
[Golang] http.Client reuse connection 증상 Go 로 만든 서비스 운영 중 특정 서버에 HTTP Request 를 요청하는 Http Client 서비스를 구현하던 중 Client 객체를 매번 생성하는 방식으로 구현했더니 커널단에서 TIME_WAIT 인 socket이 쌓여 자원 고갈이 되는 증상이 발생 문제점 HTTP Client Request 시 마다 Client 객체를 생성하거나 Client pool 방식을 사용하지 않는 경우 매번 Client 소켓을 생성하고 TCP 생명 주기에 따라 Client 소켓 종료시 TIME_WAIT 상태에서 기다리게 되며 자원이 고갈된다. 조치 검색 결과 Go 의 HTTP Client 는 자체적으로 Client pool 을 제공하기 때문에 다음과 같이 적용하면 최대 connection pool 을 설정할 수 있다..

반응형