1. 워커스레드와 DB커넥션 풀 설정
톰캣 워커 스레드가 많으면 많은 요청을 동시에 할수 있지만, CPU 코어수보다 과하게 높게 책정되면 context switcing 비용때문에 오히려 느려질수 있습니다.
DB 커넥션 풀이 많으면 TCP 통신 방식의 3-wayhandshake를 반복하는걸 효율적으로 줄이고 필요할떄 커넥션 풀에서 바로 동기 handshake없이 DB와 연결 할수 있어서 좋지만, hicariCP 또한 하나의 자원이기때문에 적절하게 설정하는 것이 중요합니다.
저의 인스턴스는 1코어이나, 1코어는 TPS 300이 최대라는것을 확인하여 저희 인스턴스 정보말고 TPS와 실행시간으로만 계산했습니다.
2. 실행 시간 측정
AOP를 이용해서 로그로 한 API의 Compute time, Wait time을 측정하였습니다.

- Compute Time (요청 처리 시간) = 67.91 ms
- Wait Time (대기 시간) = 0.000167 ms (무시할 수 있을 정도로 짧음)
ngrinder 부하 테스트 할때도 대략 서비스 시간 (TTM) 62정도 나왔습니다.
3. 톰캣 워커 스레드 수
톰캣에서 워커 스레드 수는 동시에 처리할 수 있는 요청 수를 결정합니다. 이 값은 TPS (초당 처리되는 트랜잭션 수)와 요청 처리 시간을 바탕으로 계산됩니다.
공식:
톰캣 워커 스레드 수 = (TPS * 요청 처리 시간) / 1000
- TPS = 초당 처리되는 트랜잭션 수
- 요청 처리 시간 = 각 요청을 처리하는 데 걸리는 평균 시간 (단위: ms)
4. DB 커넥션 풀 크기
DB 커넥션 풀 크기도 마찬가지로 TPS와 요청 처리 시간을 바탕으로 계산됩니다. 데이터베이스에 대한 요청을 처리하는 데 필요한 커넥션 수는 요청이 동시에 DB에 연결할 수 있는 수와 관련이 있습니다.
공식:
DB 커넥션 풀 크기 = (TPS * 요청 처리 시간) / 1000
- TPS = 초당 처리되는 트랜잭션 수
- 요청 처리 시간 = DB 요청을 처리하는 데 걸리는 시간 (단위: ms)
계산:
- TPS = 1000
- Compute Time (요청 처리 시간) = 67.91 ms
- Wait Time (대기 시간) = 0.000167 ms (무시할 수 있을 정도로 짧음)
톰캣 워커 스레드 수:
톰캣 워커 스레드 수 = (1000 * 67.91) / 1000 ≈ 68
DB 커넥션 풀 크기:(대략)
DB 커넥션 풀 크기 = (1000 * 67.91) / 1000 ≈ 68
정밀하게 특정하지 않아서 정확하진 않지만 이렇게 계산할 수 있고, 아래와 같이 여러 다른 공식이 있습니다.(코어수로 계산)

1. 워커스레드와 DB커넥션 풀 설정
톰캣 워커 스레드가 많으면 많은 요청을 동시에 할수 있지만, CPU 코어수보다 과하게 높게 책정되면 context switcing 비용때문에 오히려 느려질수 있습니다.
DB 커넥션 풀이 많으면 TCP 통신 방식의 3-wayhandshake를 반복하는걸 효율적으로 줄이고 필요할떄 커넥션 풀에서 바로 동기 handshake없이 DB와 연결 할수 있어서 좋지만, hicariCP 또한 하나의 자원이기때문에 적절하게 설정하는 것이 중요합니다.
저의 인스턴스는 1코어이나, 1코어는 TPS 300이 최대라는것을 확인하여 저희 인스턴스 정보말고 TPS와 실행시간으로만 계산했습니다.
2. 실행 시간 측정
AOP를 이용해서 로그로 한 API의 Compute time, Wait time을 측정하였습니다.
ngrinder 부하 테스트 할때도 대략 서비스 시간 (TTM) 62정도 나왔습니다.
3. 톰캣 워커 스레드 수
톰캣에서 워커 스레드 수는 동시에 처리할 수 있는 요청 수를 결정합니다. 이 값은 TPS (초당 처리되는 트랜잭션 수)와 요청 처리 시간을 바탕으로 계산됩니다.
공식:
톰캣 워커 스레드 수 = (TPS * 요청 처리 시간) / 1000
4. DB 커넥션 풀 크기
DB 커넥션 풀 크기도 마찬가지로 TPS와 요청 처리 시간을 바탕으로 계산됩니다. 데이터베이스에 대한 요청을 처리하는 데 필요한 커넥션 수는 요청이 동시에 DB에 연결할 수 있는 수와 관련이 있습니다.
공식:
DB 커넥션 풀 크기 = (TPS * 요청 처리 시간) / 1000
계산:
톰캣 워커 스레드 수:
톰캣 워커 스레드 수 = (1000 * 67.91) / 1000 ≈ 68
DB 커넥션 풀 크기:(대략)
DB 커넥션 풀 크기 = (1000 * 67.91) / 1000 ≈ 68
정밀하게 특정하지 않아서 정확하진 않지만 이렇게 계산할 수 있고, 아래와 같이 여러 다른 공식이 있습니다.(코어수로 계산)