톰캣 데이터 소스 min-idle

톰캣 데이터 소스 min-idle

작년 8월쯔음에 spring boot로 프로젝트를 하나 만들어서 진행했습니다.
내부 임베디드 톰캣을 사용해서 서버를 기동시켰고 정상적으로 동작하는것으로 판단했습니다. 아래는 해당 프로젝트 설정 입니다.

스프링 부트 버전

1
2
3
4
5
6
7

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.4.RELEASE</version>
</parent>

자바 스프링 설정

1
2
3
4
5
6
7
8
9
10
11
12
13
14

@Bean(name = "poolProperties")
@ConfigurationProperties(prefix = "slave")
public PoolProperties getStatisticsSlavePoolProperties() {
return new PoolProperties();
}

@Bean(name = "slaveJdbcDataSource")
public DataSource statisticsSlaveJdbcDataSource(@Qualifier("slave") PoolProperties poolProperties) {
log.debug("poolProperties "+poolProperties.getMinIdle());
org.apache.tomcat.jdbc.pool.DataSource dataSource = new org.apache.tomcat.jdbc.pool.DataSource(poolProperties);
return dataSource;
}

프로퍼티 설정

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

slave.url=jdbc:mysql://172.20.0.106:3306/dreamsearch?autoReconnect=true&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC&zeroDateTimeBehavior=convertToNull
slave.username=sjkim3
statisticsSlave.password=sjkim3!23$
slave.driver-class-name=com.mysql.cj.jdbc.Driver
slave.max-active=100
slave.max-wait=10000
slave.min-idle=30
slave.validation-query=SELECT 1
slave.time-between-eviction-runs-millis=5000
slave.min-evictable-idle-time-millis=3000
slave.test-while-idle=true
slave.test-on-borrow=true
slave.test-on-return=false

위에 처럼 기본 datasource 설정을 사용했는데 저기서 slave.min-idle 설정이 안됨 확인은 windows cmd 창에서 아래의 명령어 수행

1
2
3

netstat -ano | findstr 3306

poolProperties에서 못읽어 온줄 알고 min 값 찍어봄 잘됨 ㅡㅡ;;

앵 이상해서 tomcat jdbc pool 설정을 살펴 봄 initialSize 설정이 있음 기본이 10개군 그래서 계속 10개만 생김

1
2
3
initialSize	
(int)The initial number of connections that are created when the pool is started. Default value is 10

프로퍼티에 아래의 값을 추가해서 봄

1
2
slave.initial-size=30

굿 잘됨

참고로 신규로 만든 프로젝트는 히카리CP를 사용하게 함(스프링에서 기본으로 채택하고 있음) 거기선 아래의 프로퍼터로 제어함

1
2
spring.datasource.hikari.minimumIdle=1

참조