Java21μ μ¬μ©νλ©΄ μ€νλ§ λΆνΈ 3.2λΆν° λ€μκ³Ό κ°μ΄ application.yml μ λ€μκ³Ό κ°μ μ€μ μ μΆκ°ν΄μ κ°λ¨νκ² κ°μ μ€λ λλ₯Ό μ¬μ©ν μ μλ€.
spring:
threads:
virtual:
enabled: trueλ€μκ³Ό κ°μ΄ μ€μ νκ³ http/product-api.httpμμ μνμ μμ±νλ APIλ₯Ό νΈμΆνμ λ νμ¬ μ΄λ€ μ€λ λλ₯Ό μ¬μ©νλμ§ λ‘κ·Έλ₯Ό μ°μ΄λ³΄λλ‘ νμ.
- μνμ μμ±νλ μ€λ λλ κ·Έλ₯ μ€λ λμμ λμνκ³ , λΉλκΈ°μ μΌλ‘
ProductCreateEventλ₯Ό λ§λλ κ²λAsyncConfigμμ μ§μ ν μ€λ λ νμ μ€λ λλ₯Ό μ¬μ©νλ κ²μ νμΈν μ μλ€.
- μνμ μμ±νλ μ€λ λ λ° λΉλκΈ°μ μΌλ‘
ProductCreateEventλ₯Ό μμ±νλ μ€λ λλ λͺ¨λ κ°μ μ€λ λλ₯Ό μ¬μ©νλ κ²μ νμΈν μ μλ€.
κ°μ μ€λ λλ₯Ό μ μ©νμ§ μμ κ²½μ°, κ°μμ€λ λλ₯Ό μ μ©ν κ²½μ° κ°κ° λΆνν μ€νΈ
- web containerλ
tomcat.server.threads.max=1λ‘ μ€μ νμ¬, μ΅λ μ€λ λκ° 1κ°λ‘ μλ²κ° λμλλλ‘ μ€μ νλ€. - Dockerfile λΉλ μ System Propertyλ‘
-Djdk.virtualThreadScheduler.maxPoolSize=1κ³Ό κ°μ΄ μ€μ ν΄μ€λ€.- μ΄λ₯Ό ν΅ν΄ κ°μμ€λ λ μ€μΌμ€λ¬κ° μ΅λ 1κ°μ νλ«νΌ μ€λ λλ₯Ό μ¬μ©νλλ‘ μ€μ νλ€.
- κ°μμ€λ λλ₯Ό μ μ©ν κ²½μ°μ μ μ©νμ§ μμ κ²½μ° κ°κ° λΆνν
μ€νΈμμ 50λͺ
μ κ°μ μ μ κ° λμμ
GET /healthμμ²μ 보λ΄λλ‘ νλ€.GET /healthAPI λ λ€μκ³Ό κ°μ΄ ꡬνλΌ μλ€.
@GetMapping("/health")
fun healthCheck(): String {
log.info("Thread: {}", Thread.currentThread())
Thread.sleep(1000L) // Blocking
return "OK"
}## Locust ν΄λλ‘ μ΄λ
cd locust/
## ν
μ€νΈ μ€ν: μλ λͺ
λ Ήμ΄λ₯Ό μ€ν ν `localhost:8089`μμ ν
μ€νΈλ₯Ό μ€νμν¨λ€.
docker compose -f docker-compose-platform.yml up -d
## μ’
λ£ μ
docker compose -f docker-compose-platform.yml down
- μ€λ λκ° 1κ°μ΄κΈ° λλ¬Έμ, 50λͺ
μ μ μ κ° μμ²μ 보λ΄λ 1κ°λ§ μλ΅μ΄ κ°λ₯νλ€. λ°λΌμ RPSκ° 1μΈ κ²μ νμΈν μ μλ€.
- 1κ°μ μμ²μ΄ μ²λ¦¬λλ λμ λλ¨Έμ§ μλ΅μ λκΈ°νλ―λ‘ μλ΅μκ°μ΄ κ³μ μ¦κ°νλ κ²μ νμΈν μ μλ€.
## Locust ν΄λλ‘ μ΄λ
cd locust/
## ν
μ€νΈ μ€ν: μλ λͺ
λ Ήμ΄λ₯Ό μ€ν ν `localhost:8089`μμ ν
μ€νΈλ₯Ό μ€νμν¨λ€.
docker compose -f docker-compose-virtual.yml up -d
## μ’
λ£ μ
docker compose -f docker-compose-virtual.yml down
- μ¬μ©νλ νλ«νΌ μ€λ λλ 1κ°μ΄μ§λ§, κ°μ μ€λ λλ₯Ό λ§λ€μ΄μ μλ΅μ νκΈ° λλ¬Έμ RPSκ° 50μΈ κ²μ νμΈν μ μλ€.
- 50λͺ μ μ μ κ° μκ³ , μλ΅νλλ° 1μ΄κ° 걸리기 λλ¬Έμ μμ°μ€λ½λ€.
- κ°μμ€λ λκ° κ³μ μμ±λκ³ GCλ‘ μ¬λΌμ§κΈ° λλ¬Έμ, Heap μμμ λ©λͺ¨λ¦¬κ° μ¬λΌκ°λ€ λ΄λ €κ°λ€ νλ κ²μΌλ‘ μΆμΈ‘λλ€.





