Skip to content
GwiyeomGo Tech Blog
About GwiyeomGo

Golang(Go) connection full

GOLANG, 20252 min read

배경

DB 부하가 발생하는 상황에서

디비에 대기 상태 건들이 계속 유지되고 있어서 일단 풀 안에 놀고 있는 연결 수 (SetMaxIdleConns)를 10에서 2로 줄였다 부하에 대한 여러 원인이 있기때문에 큰 효과는 없었지만 커넥션풀이 정확이 무엇이며 어떻게 설정하는지 정리해보자

DB 커넥션풀

서버와 DB는 네트워크 통신을 통해 연결되며 네트워크 연결을 생성하고 종료하는데 0.5~1초 소요된다 연결,종료 시간은 전체 응답 시간에 영향을 준다 응답 시간이 길어지면 전체 처리량 떨어진다 매 요청마다 DB 연결하고 종료하면 트래픽 급증시 처리량 떨어진다 이 문제를 피하기 위해 커넥션풀 사용한다

DB 커넥션 풀은 연결된 커넥션을 미리 생성해서 보관한다 애플리케이션은 DB 작업이 필요할 때 풀에서 커넥션을 가져와 사용 작업이 끝나면 다시 풀에 반환한다 이미 연결된 커넥션을 재사용하기 떄문에 응답 시간이 줄어드는 장점이 있다

golang 에서 xorm 에서 커넥션 풀 설정

xormDb.SetMaxOpenConns(10) //최대 동시 연결 수 xormDb.SetMaxIdleConns(2) //사용되지 않고 대기 상태(idle) xormDb.SetConnMaxLifetime(10 * time.Minute) //하나의 연결을 최대 10분까지만 재사용

© 2025 by GwiyeomGo Tech Blog. All rights reserved.