728x90
반응형
Go
프로젝트에서 http 클라이언트를 만들어서 활용하고 있었는데 어느날 서버에 응답이 없었다.
그래서 서버에 들어가서 확인해보니 too many open files
라는 에러가 나고 있었다.
netstat
으로 확인해보니 CLOSE_WAIT
상태로 많이 쌓여 있었다.
어디가 문제인가 살펴보니 defer resp.Body.Close()
를 하는데 상태값이 200인 경우에만 닫도록 돼있었다.
(문서에서 Body
를 읽은 경우엔 항상 닫아주라고 써있다.)
resp, err := http.Get("http://example.com/")
if err != nil {
return
} else if resp.StatusCode != 200 {
return
}
defer resp.Body.Close()
다음과 같이 수정한 이후 경과를 살펴보니 잘 동작하는 것을 확인할 수 있었다.
resp, err := http.Get("http://example.com/")
if err != nil {
return
}
defer resp.Body.Close()
if resp.StatusCode != 200 {
return
}
참고 문헌
반응형
'Golang' 카테고리의 다른 글
[Go] 데이터베이스 조회가 오래 걸리는 문제 (0) | 2020.10.08 |
---|---|
[Golang] 쿼리 실행할 때 타임아웃 설정하기 (0) | 2020.09.03 |
[Golang] Echo 파일 업로더 서버 구축 (0) | 2020.07.30 |
[Golang] 커맨드 명령 동시 실행 및 디렉토리 제거 (0) | 2020.07.02 |
[Golang] Go의 선(The Zen of Go) (0) | 2020.06.04 |