๐ŸŒ Backend

Thread Pool์— ๋Œ€ํ•ด์„œ(with Tomcat, Spring Boot)

DevPoong 2023. 9. 12. 19:30

Thread

Process์˜ ์ž‘์—…์€ Thread ๋‹จ์œ„๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  CPU Core๊ฐ€ Thread ๋‹จ์œ„๋กœ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋œ๋‹ค.
๊ฒฐ๋ก ์ ์œผ๋กœ Thread๋Š” CPU Core์˜ ์‹คํ–‰ ๋‹จ์œ„์ด๋‹ค.

 

Thread๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์„œ ํ•˜๋‚˜์˜ Process์—์„œ ๋‘ ๊ฐ€์ง€ ์ด์ƒ์˜ ์ž‘์—…์„ ๋™์‹œ์— ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋œ๋‹ค.

 

Thread๋ฅผ ๋‹จ์ˆœํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ๋•Œ ๋ฌธ์ œ์ 

์ƒˆ๋กœ์šด ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด Thread๋ฅผ ์ƒ์„ฑํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ๋ฌธ์ œ์ ์„ ์ƒ๊ฐํ•ด๋ณด์ž.

์ƒ์„ฑ ๋น„์šฉ์ด ํฐ Thread

Thread๋Š” ์ƒ์„ฑ ๋น„์šฉ์ด ํฌ๋‹ค. ๋”ฐ๋ผ์„œ ํ•ด๋‹น ๋ฐฉ์‹์œผ๋กœ๋Š” ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์‹œ๊ฐ„์ด ๋Š˜์–ด๋‚  ์ˆ˜ ๋ฐ–์— ์—†๋‹ค.

์•„๋ž˜ ๊ทธ๋ฆผ์„ ๋ณด๋ฉด์„œ ๋” ์ž์„ธํ•˜๊ฒŒ ์•Œ์•„๋ณด์ž.

  • Java๋Š” One-to-One Threading-Model๋กœ Thread๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  • User Thread(Process์˜ ์Šค๋ ˆ๋“œ) ์ƒ์„ฑ์‹œ OS Thread(OS ๋ ˆ๋ฒจ์˜ ์Šค๋ ˆ๋“œ)์™€ ์—ฐ๊ฒฐํ•œ๋‹ค.
  • ์ƒˆ๋กœ์šด Thread๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋งˆ๋‹ค OS Kernel์˜ ์ž‘์—…์ด ํ•„์š”ํ•˜๋‹ค.
  • Thread๋Š” ์ƒ์„ฑ ๋น„์šฉ์ด ํฌ๋‹ค.
  • ์ž‘์—… ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๋•Œ ๋งˆ๋‹ค Thread๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์ตœ์ข…์ ์ธ ์š”์ฒญ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ์ฆ๊ฐ€ํ•œ๋‹ค.

 

Thread๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์œผ๋ฉด ์—ฌ๋Ÿฌ ๋ณตํ•ฉ์ ์ธ ๋ฌธ์ œ ๋ฐœ์ƒ

๋งŒ์•ฝ Process์˜ ์ฒ˜๋ฆฌ ์†๋„๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ์ƒˆ๋กœ์šด Thread๊ฐ€ ๋ฌด์ œํ•œ์ ์œผ๋กœ ๊ณ„์† ์ƒ์„ฑ๋  ๊ฒƒ์ด๋‹ค.
๊ทธ๋ฆฌ๊ณ  Thread๊ฐ€ ๋งŽ์•„ ์งˆ์ˆ˜๋ก ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋งŽ์ด ์ฐจ์ง€ํ•˜๊ณ  Context-Switching์ด ๋” ์ž์ฃผ ๋ฐœ์ƒํ•œ๋‹ค.
์ด๋Ÿฌํ•œ ๋ฌธ์ œ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ CPU ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

 

Thread Pool๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด๋ณด์ž

Thread Pool์ด๋ž€ Thread๋ฅผ ํ—ˆ์šฉ๋œ ๊ฐœ์ˆ˜ ์•ˆ์—์„œ ์‚ฌ์šฉํ•˜๋„๋ก ์ œํ•œํ•˜๋Š” ์‹œ์Šคํ…œ์ด๋‹ค.

ํ•œ๋ฒˆ ์‚ฌ์šฉ๋œ Thread๋Š” ์ž‘์—…์ด ๋๋‚˜๊ณ  ์—†์–ด์ง€์ง€ ์•Š๊ณ  ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ํŠน์ง•์ด ์žˆ๋‹ค.

 

 

์Šค๋ ˆ๋“œ ํ’€์€ ํฌ๊ฒŒ ์Šค๋ ˆ๋“œ, ์ž‘์—… ํ ๋‘๊ฐ€์ง€๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

๊ฐ„๋‹จํ•˜๊ฒŒ ์ž‘์—… ํ๋ฆ„์„ ๋ณด์ž.

  1. ์Šค๋ ˆ๋“œํ’€์— ์ž‘์—… ์ฒ˜๋ฆฌ๋ฅผ ์š”์ฒญ
  2. ์ž‘์—… ํ์— offer
  3. ์ž‘์—… ํ์—์„œ pollํ•˜์—ฌ ๊ฐ ์Šค๋ ˆ๋“œ๋กœ ์ž‘์—…์„ ๋ณด๋‚ด๊ณ , ์Šค๋ ˆ๋“œ๋Š” ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•จ
  4. ๊ฒฐ๊ณผ ์ „๋‹ฌ

์ถœ์ฒ˜ :nbsp; https://www.baeldung.com/thread-pool-java-and-guava

 

๊ทธ๋ž˜์„œ Thread Pool์ด ์•ž์„œ ๋งํ–ˆ๋˜ ๋‹จ์ˆœํ•˜๊ฒŒ Thread๋ฅผ ์ด์šฉํ–ˆ์„ ๋•Œ์˜ ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์ž.

 

1. ์ž‘์—… ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๋•Œ๋งˆ๋‹ค Thread๋ฅผ ์ƒ์„ฑํ•จ์œผ๋กœ์จ ์ตœ์ข… ์š”์ฒญ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ์ฆ๊ฐ€ํ•œ๋‹ค๋Š” ๋ฌธ์ œ

-> โœ… ํ•ด๊ฒฐ: ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด ๋‘” Thread๋ฅผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ๋กœ์šด Thread๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋น„์šฉ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

 

2. ๋ฉ”๋ชจ๋ฆฌ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ CPU ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ

-> โœ… ํ•ด๊ฒฐ: ์‚ฌ์šฉํ•  Thread ๊ฐœ์ˆ˜๋ฅผ ์ œํ•œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌด์ œํ•œ์ ์œผ๋กœ ์Šค๋ ˆ๋“œ๊ฐ€ ์ƒ์„ฑ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋ฐฉ์ง€ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

๋”ฐ๋ผ์„œ, ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ž‘์—…์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜๋ฉด์„œ ์•ˆ์ •์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‹ถ์„ ๋•Œ Thread Pool์ด ํšจ๊ณผ์ ์ด๋‹ค.

 

Java์˜ Thread Pool์˜ ๊ตฌ์„ฑ

Java๋Š” ThreadPoolExecutor ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•ด์„œ Thread Pool์„ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ๋‹ค.

maximumPoolSize, keepAliveTime, corePoolSize ์„ธ๊ฐ€์ง€ ํŠน์ง•์ด ์žˆ๋‹ค.

 

Thread Pool์—๋Š” ํ•ญ์ƒ maximumPoolSize๊ฐ’์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋กœ Thread๋ฅผ ๋งŒ๋“ค์–ด ๋‘์ง€ ์•Š๋Š”๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์š”์ฒญ์ด ์ ์„ ๋•Œ๋Š” ๋งŽ์€ ์–‘์˜ ์“ฐ๋ ˆ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์„ ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ด๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ๋“ค์–ด์žˆ๋‹ค.

 

โญ๏ธ ๋งŒ์•ฝ ์ž‘์—…์ด ์—†๋Š”๋ฐ ์Šค๋ ˆ๋“œ ๊ฐœ์ˆ˜๊ฐ€ ์ตœ๋Œ€๋กœ ์žˆ๊ณ  keepAliveTime ์ดํ›„๋กœ๋„ ๊ณ„์† ์š”์ฒญ์ด ์—†์œผ๋ฉด ์ž‘์—… Queue์—๋„ ์ž‘์—…์ด ์—†๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ์Šค๋ ˆ๋“œ๋ฅผ corePoolSize ๊นŒ์ง€๋งŒ ์—†์•ค๋‹ค.

์ด๋Ÿฌํ•œ Thread Pool์ด ์–ด์šธ๋ฆด ๋งŒํ•œ ๊ณณ์€ Web Server๋ฅผ ์˜ˆ๋กœ ๋“ค ์ˆ˜ ์žˆ๋‹ค.

 

Thread Pool์„ ์‚ฌ์šฉํ•˜๋Š” Web Server

๋™์‹œ์ ์ธ ์š”์ฒญ์„ ๋™์‹œ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋งŽ์€ ์›น ์„œ๋ฒ„๋“ค์ด Thread Pool์„ ์‚ฌ์šฉํ•œ๋‹ค.

SpringBoot์˜ ๋‚ด์žฅ Servlet Container ์ค‘ ํ•˜๋‚˜์ธ Tomcat์„ ์›น ์„œ๋ฒ„ ์˜ˆ์‹œ๋กœ ๋“ค ์ˆ˜ ์žˆ๋‹ค.

Tomcat์€ Java ๊ธฐ๋ฐ˜์˜ WAS ๋กœ์„œ Java์˜ Thread Pool ํด๋ž˜์Šค์™€ ๋งค์šฐ ์œ ์‚ฌํ•œ ์ž์ฒด Thread Pool ๊ตฌํ˜„์ฒด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

 

MaxConnection

MaxConnection์€ Tomcat์ด ์ตœ๋Œ€๋กœ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” Connection ๊ฐœ์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค. 
Web ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด Tomcat์˜ Connector๊ฐ€ Connection์„ ์ƒ์„ฑํ•˜๋ฉด์„œ ํด๋ผ์ด์–ธํŠธ์™€ ์ปค๋„ฅ์…˜์„ ์—ฐ๊ฒฐํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ๊ทธ๋•Œ ์š”์ฒญ๋œ ์ž‘์—…์„ Thread Pool์— ์—ฐ๊ฒฐํ•œ๋‹ค. ์ด๋•Œ ๋™์‹œ์— ์ปค๋„ฅ์…˜์„ ์—ฐ๊ฒฐํ•ด์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ปค๋„ฅ์…˜์˜ ๊ฐœ์ˆ˜๊ฐ€ MaxConnections์ด๋‹ค.

 

AcceptCount

Max-Connections ์ด์ƒ์˜ ์š”์ฒญ์ด ๋“ค์–ด์™”์„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€๊ธฐ์—ด Queue์˜ ์‚ฌ์ด์ฆˆ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
MAX-Connections์™€ Accept-Count ์ด์ƒ์˜ ์š”์ฒญ์ด ๋“ค์–ด์™”์„ ๋•Œ ์ถ”๊ฐ€์ ์œผ๋กœ ๋“ค์–ด์˜ค๋Š” ์š”์ฒญ์€ ๊ฑฐ์ ˆ๋  ์ˆ˜ ์žˆ๋‹ค.

 

SpringBoot ์„ค์ •์œผ๋กœ Tomcat Thread Pool ์„ค์ •

# application.yml (์ ์–ด๋†“์€ ๊ฐ’์€ default)
server:
  tomcat:
    threads:
      max: 200 # ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” thread์˜ ์ด ๊ฐœ์ˆ˜
      min-spare: 10 # ํ•ญ์ƒ ํ™œ์„ฑํ™” ๋˜์–ด์žˆ๋Š”(idle) thread์˜ ๊ฐœ์ˆ˜
    max-connections: 8192 # ์ˆ˜๋ฆฝ๊ฐ€๋Šฅํ•œ connection์˜ ์ด ๊ฐœ์ˆ˜
    accept-count: 100 # ์ž‘์—…ํ์˜ ์‚ฌ์ด์ฆˆ
    connection-timeout: 20000 # timeout ํŒ๋‹จ ๊ธฐ์ค€ ์‹œ๊ฐ„, 20์ดˆ
  port: 8080 # ์„œ๋ฒ„๋ฅผ ๋„์šธ ํฌํŠธ๋ฒˆํ˜ธ

SpringBoot์—์„œ ๋‚ด์žฅ ํ†ฐ์บฃ Thread Pool์— ๋Œ€ํ•œ ์„ค์ •์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

server.tomcat.threads.max

Thread Pool์—์„œ ์‚ฌ์šฉํ•  ์ตœ๋Œ€ ์Šค๋ ˆ๋“œ ๊ฐœ์ˆ˜์ด๊ณ  ๊ธฐ๋ณธ ๊ฐ’์€ 200์ด๋‹ค.

์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋™์‹œ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์š”์ฒญ ๊ฐœ์ˆ˜์™€ ๊ด€๋ จ๋˜์–ด ์žˆ๋‹ค.

์š”์ฒญ ์ˆ˜์— ๋น„ํ•ด ๋„ˆ๋ฌด ๋งŽ๊ฒŒ ์„ค์ •ํ•˜๋ฉด -> ๋†€๊ณ  ์žˆ๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ ๋งŽ์•„์ ธ์„œ ๋น„ํšจ์œจ์ด ๋ฐœ์ƒํ•œ๋‹ค.

๋„ˆ๋ฌด ์ ๊ฒŒ ์„ค์ •ํ•˜๋ฉด -> ๋™์‹œ ์ฒ˜๋ฆฌ ์š”์ฒญ์ˆ˜๊ฐ€ ์ค„์–ด๋“ค์–ด ํ‰๊ท ์‘๋‹ต์‹œ๊ฐ„๊ณผ TPS๊ฐ€ ๊ฐ์†Œํ•œ๋‹ค.

 

๊ธฐ๋ณธ์ ์œผ๋กœ Thread๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก CPU ์˜ค๋ฒ„ํ—ค๋“œ์™€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค.

 

server.tomcat.threads.min-spare

Thread Pool์—์„œ ์ตœ์†Œํ•œ์œผ๋กœ ์œ ์ง€ํ•  Thread ๊ฐœ์ˆ˜, ๊ธฐ๋ณธ ๊ฐ’์€ 10์ด๋‹ค.

๋„ˆ๋ฌด ๋งŽ์ด ์„ค์ •ํ•˜๋ฉด -> Thread Pool์ด ํ•ญ์ƒ ์œ ์ง€ํ•ด์•ผ ํ•  Thread ์ˆ˜๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์•„์ง„๋‹ค.

์ ์ ˆํ•˜๊ฒŒ ์„ค์ •ํ•˜๋ฉด -> ์ ์€ ์ˆ˜์˜ ์š”์ฒญ์—์„œ ์ƒˆ๋กœ์šด ์Šค๋ ˆ๋“œ๋ฅผ ๋งŒ๋“ค ํ•„์š”์—†์ด ์š”์ฒญ์„ ํšจ๊ณผ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ž˜๋ชป ์„ค์ •ํ–ˆ์„ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” Thread๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•˜๋ฉด์„œ ๋น„ํšจ์œจ์„ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค.

 

server.tomcat.max-connections

๋™์‹œ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ Connection์˜ ๊ฐœ์ˆ˜, ๊ธฐ๋ณธ ๊ฐ’์€ 8192์ด๋‹ค.

์‚ฌ์‹ค์ƒ ์„œ๋ฒ„์˜ ์‹ค์งˆ์ ์ธ ๋™์‹œ ์š”์ฒญ ์ฒ˜๋ฆฌ ๊ฐœ์ˆ˜๋ผ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ด ๋ถ€๋ถ„์—์„œ Tomcat์˜ Connector ์ปดํฌ๋„ŒํŠธ์˜ ์ž‘์—… ๋ฐฉ์‹์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค.

Blocking I/O ๋ฐฉ์‹์—์„œ๋Š” ์ปค๋„ฅ์…˜ ํ•˜๋‚˜๊ฐ€ ํ•˜๋‚˜์˜ Thread์™€ ์—ฐ๊ฒฐ๋˜์–ด ์ž‘์—…ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ, ์ด ๋ฐฉ์‹์—์„œ๋Š” MaxThreadSize์™€ MaxConnection ๊ฐœ์ˆ˜๊ฐ€ ํ•ญ์ƒ ๊ฐ™์•„์•ผ ํ•œ๋‹ค. Tomcat 7 ๋ฒ„์ „๊นŒ์ง€ ์ ์šฉ๋œ ๋ฐฉ์‹์ด๋‹ค.

โœ… Non-Blocking I/O ๋ฐฉ์‹์—์„œ๋Š” Thread ํ•˜๋‚˜์— ์ปค๋„ฅ์…˜์ด ์—ฌ๋Ÿฌ๊ฐœ ์—ฐ๊ฒฐ๋˜์–ด ๋™์‹œ์ ์œผ๋กœ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. MaxThreadSize๋ณด๋‹ค MaxConnection์ด ๋” ๋งŽ์•„๋„ ๋œ๋‹ค. ํ•ด๋‹น ๋ฐฉ์‹์˜ ๊ฒฝ์šฐ Tomcat 8 ๋ฒ„์ „ ์ดํ›„๋ถ€ํ„ฐ ์ ์šฉ๋˜์–ด ์žˆ๋‹ค.

ํ•˜๋‚˜์˜ Thread์— ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ปค๋„ฅ์…˜์„ ์—ฐ๊ฒฐํ•˜์—ฌ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ "MaxConnectionSize < = MaxThreadSize" ์ƒํ™ฉ์— ๋น„ํšจ์œจ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

 

server.tomcat.accept-count

max-connections ์ด์ƒ์˜ ์š”์ฒญ์ด ๋“ค์–ด์™”์„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์š”์ฒญ ๋Œ€๊ธฐ์—ด Queue์˜ ์‚ฌ์ด์ฆˆ, ๊ธฐ๋ณธ ๊ฐ’์€ 100์ด๋‹ค.

๋„ˆ๋ฌด ํฌ๊ฒŒ ์„ค์ •ํ•˜๋ฉด -> ๋Œ€๊ธฐ์—ด์ด ์ปค์ง€๋ฉด์„œ ๋ฉ”๋ชจ๋ฆฌ ๋ฌธ์ œ๋ฅผ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ๋‹ค.

๋„ˆ๋ฌด ์ž‘๊ฒŒ ์„ค์ •ํ•˜๋ฉด -> ์š”์ฒญ์ด ๋ชฐ๋ ธ์„ ๋•Œ ๋“ค์–ด์˜ค๋Š” ์š”์ฒญ๋“ค์„ ๊ฑฐ์ ˆํ•ด ๋ฒ„๋ฆด ์ˆ˜ ์žˆ๋‹ค.

์ด ์„ค์ •์„ ํ•˜๋Š” ์ด์œ ์ค‘ ํ•˜๋‚˜๋Š” ๋ถ€์ ์ ˆํ•˜๊ฑฐ๋‚˜ ์ž˜๋ชป๋œ ์š”์ฒญ์ด ํ•œ๋ฒˆ์— ๋„ˆ๋ฌด ๋งŽ์ด ๋“ค์–ด์™€ ์„œ๋ฒ„์— ์žฅ์• ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•จ๋„ ์žˆ๋‹ค.

 

๊ฒฐ๋ก 

Thread Pool์€ ์‘๋‹ต์‹œ๊ฐ„๊ณผ TPS์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ํ•˜๋‚˜์˜ ์š”์†Œ์ด๋‹ค.

๋”ฐ๋ผ์„œ, ์ž˜ ์กฐ์ •๋œ Thread Pool์€ ์‹œ์Šคํ…œ์˜ ์„ฑ๋Šฅ์„ ๋Œ์–ด๋‚ด๊ณ  ์•ˆ์ •์ ์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์šด์šฉ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.

๋ถ€์ ์ ˆํ•˜๊ฒŒ ์„ค์ •๋œ Thread Pool์€ ๋ณ‘๋ชฉ ํ˜„์ƒ, CPU ์˜ค๋ฒ„ํ—ค๋“œ, ๋ฉ”๋ชจ๋ฆฌ ๋ฌธ์ œ๋ฅผ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ๋‹ค.