Spring Boot에서 최대 Thread 개수 늘리기: Tomcat 설정으로 서버 성능 향상하기
Springboot 의 thread 개수
springboot 에는 내장 서버인 tomcat 이 들어가 있다 유저의 요청이 들어오면 Thread pool 에서 하나씩 배정 하여 그것을 사용한다. 이때 Thread 의 개수 제한에 따라 동시에 몇개의 요청을 처리 할 수 있을지가 결정이 된다 실제로 우리 서버에서는 최대 thread 개수가 200개로 기본값이 설정되어 있었다. 따라서 다음과 같은 코드가 있다고 하면
1
2
3
4
5
6
7
8
9
10
11
@GetMapping("index")
public String getMainPage(Model model) {
System.out.println("started");
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("done");
return "index";
}
400명이 동시에 요청하게 되면 200명은 1초뒤에 바로 index.html 을 볼 수 있지만 나머지 200명은 2초가 지나야 확인이 가능하다
Thread 개수 늘리기
그 개수를 수정하기 위해서는 application.yml 을 수정하면 된다!
1
2
3
4
5
6
7
8
server:
tomcat:
threads:
max: 400 # 생성 가능한 thread의 총 개수
min-spare: 20 # 항상 활성화 된 thread의 개수
max-connections: 8192 # connection의 총 개수
accept-count: 100 # 작업큐의 사이즈
connection-timeout: 20000 # timeout 판단 기준 시간, 20초
혹시! 위의 값을 수정해도 되지 않는다면 tomcat 이 아닌 jetty 서버를 사용하고 있을 수도 있다! tomcat 을 jetty 로 바꿔주면 된다!
This post is licensed under CC BY 4.0 by the author.