Hikari 빼고 DBCP2로 변경 ‐ 로컬 배포 차이점 - nhnacademy-be10-WannaB/wannab-wiki GitHub Wiki

DBCP2로 구성 방법 - 로컬

1. pom.xml 에 의존성 추가

		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-dbcp2</artifactId>
			<version>2.12.0</version>
		</dependency>

2. application-dev.yml에서 해당 부분 제거

  datasource:
    url: jdbc:h2:mem:testdb
    driver-class-name: org.h2.Driver
    type: org.apache.commons.dbcp2.BasicDataSource
    username: sa
    password: ""

3. application-dev.yml에 해당 부분 추가

dbcp2:
  datasource:
    url: jdbc:h2:mem:testdb
    driver-class-name: org.h2.Driver
    username: sa
    password: ""
    initial-size: 5
    max-total: 5
    max-idle: 5
    min-idle: 5
  • 로컬에서는 테스트 용이니까 Connection Pool의 사이즈는 5로 유지

4. DataSourceConfig 클래스 추가

@Getter @Setter
@Configuration
@ConfigurationProperties(prefix = "dbcp2.datasource")
public class DataSourceConfig {

    private String driverClassName;
    private String url;
    private String username;
    private String password;
    private Integer maxIdle;
    private Integer maxTotal;
    private Integer initialSize;
    private Integer minIdle;

    @Bean
    public DataSource dataSource() {
        BasicDataSource basicDataSource = new BasicDataSource();

        basicDataSource.setDriverClassName(driverClassName);
        basicDataSource.setUrl(url);
        basicDataSource.setUsername(username);
        basicDataSource.setPassword(password);
        basicDataSource.setMaxIdle(maxIdle);
        basicDataSource.setMaxTotal(maxTotal);
        basicDataSource.setInitialSize(initialSize);
        basicDataSource.setMinIdle(minIdle);

        basicDataSource.setValidationQuery("SELECT 1");
        basicDataSource.setTestOnReturn(true);
        basicDataSource.setTestOnBorrow(false);
        basicDataSource.setTestWhileIdle(true);

        return basicDataSource;
    }
}

배포 환경

  • pom.xml, 클래스는 같음
dbcp2:
  datasource:
    url: `db address`
    username: `db username`
    password: `db password`
    driver-class-name: com.mysql.cj.jdbc.Driver
    initial-size: 15
    max-total: 15
    max-idle: 15
    min-idle: 15
  • MySQL 기본 설정 커넥션 최대수는 151개
    • 우리 서비스는 v1, v2 포함 총 8개
    • 그래서 15개로 설정
    • 15 * 8 = 120 이니까
⚠️ **GitHub.com Fallback** ⚠️