728x90
반응형

Go로 REST API 서버를 만들어서 사용하는데 특정 API의 응답 시간이 오래 걸리는 경우가 있었다.

 

처음에 어떤 문제로 오래 걸리는지 파악이 되지 않아 캐시를 사용했지만 계속 발생했었다.

 

데이터베이스 조회에 걸리는 시간을 측정해보니 여기서 오래 걸리는 것을 확인할 수 있었다.

 

오래 걸리는 이유는 데이터베이스 커넥션 풀과 관련한 설정 문제인 것 같아 문서를 읽어보았다.

 

SetMaxIdleConns 설정값을 SetMaxOpenConns 설정값보다 크거나 같게 설정하는 것이 좋다고 써있었다.

 

SetMaxIdleConns 함수는 유휴 상태 커넥션 풀에서 최대 연결 수로 적절한 값을 설정했다.

 

SetMaxOpenConns도 기본값인 무제한으로 사용하고 있어 크게 문제가 없어 보였지만

 

SetMaxIdleConns의 설정값과 비슷하게 하는 것이 좋다고 해서 같은 값으로 설정했다.

 

며칠을 지켜보니 응답 시간이 오래 걸리는 경우가 더이상 발생하지 않았다.

 

참고 문헌

  1. golang.org/pkg/database/sql/#DB.SetMaxIdleConns

  2. golang.org/pkg/database/sql/#DB.SetMaxOpenConns

  3. github.com/go-sql-driver/mysql

반응형

+ Recent posts