Computer Science/Operating System

์Šค๋ ˆ๋“œ sleep์„ ํ•˜๊ฒŒ ๋˜๋ฉด ์ง„์งœ ์•„๋ฌด ์ผ๋„ ์•ˆ ํ• ๊นŒ? ์•„๋‹ˆ๋ฉด ๋‹ค๋ฅธ ์ผ์„ ํ•˜๊ฒŒ ๋ ๊นŒ?

ํ”„๋กœ๊ทธ๋ž˜๋จธ ์˜ค์›” 2025. 8. 10.

 

 

7์›” ๋ถ€๊ฐ€์„ธ ์‹ ๊ณ  ๋‹ฌ์ด ๋˜๋ฉด์„œ ์ „์ž ์„ธ๊ธˆ ๊ณ„์‚ฐ์„œ ๋“ฑ ํ™ˆํƒ์Šค์™€ ํ†ต์‹ ํ•˜์—ฌ ์‘๋‹ต ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์ฒ˜๋ฆฌ ์ž‘์—…์„ ํ•˜๊ณ , ์ €์žฅ์„ ๋‹ด๋‹นํ•˜๋Š” micro server์˜ CPU ์‚ฌ์šฉ๋ฅ ์ด ๊ธ‰์ฆํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•ด ๋จผ์ € ์Šค์ผ€์ผ ์—…์„ ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ , ์ถ”ํ›„ ๋ฌธ์ œ์ ์„ ํŒŒ์•…ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

ํ•ด๊ฒฐ ์ž‘์—…์˜ ๋ฆฌ๋ทฐ๋ฅผ ๋ถ€๋ฌธ์žฅ๋‹˜๊ป˜ ๋ฐ›์œผ๋ฉด์„œ CPU ์‚ฌ์šฉ๋ฅ ์„ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ์•ˆ์— ๋Œ€ํ•ด ์†Œ๊ฐœํ•ด์ฃผ์…จ์Šต๋‹ˆ๋‹ค. ๊ทธ์ค‘ Thread Sleep ์ด์•ผ๊ธฐ๊ฐ€ ๋‚˜์™”๊ณ , Thread Sleep ํ•˜๋ฉด ์ง„์งœ ์•„๋ฌด ์ผ๋„ ์•ˆํ• ์ง€, ์•„๋‹ˆ๋ฉด ๋‹ค๋ฅธ ์ผ์„ ํ•˜๊ฒŒ ๋ ์ง€์— ๋Œ€ํ•œ ์งˆ๋ฌธ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์„ ๋ธ”๋กœ๊ทธ ๊ธ€๋กœ ์ •๋ฆฌํ•˜๋ฉด ์ข‹์„ ๊ฑฐ ๊ฐ™์•„์„œ ์ด๋ฒˆ ๋ธ”๋กœ๊ทธ ๊ธ€์„ ์ž‘์„ฑํ•˜๊ฒŒ ๋์Šต๋‹ˆ๋‹ค.

 


๐Ÿค”Thread.Sleep์„ ํ˜ธ์ถœํ•˜๋ฉด ํ•˜๊ฒŒ ๋˜๋ฉด ์ง„์งœ ์•„๋ฌด ์ผ๋„ ์•ˆ ํ• ๊นŒ? ์•„๋‹ˆ๋ฉด ๋‹ค๋ฅธ ์ผ์„ ํ•˜๊ฒŒ ๋ ๊นŒ?"

 

์งˆ๋ฌธ์— ๋Œ€ํ•œ ์ฃผ์ฒด์— ๋”ฐ๋ผ์„œ ๋‹ต๋ณ€์ด ๋‚˜๋‰  ๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ(ํ•ด๋‹น ์ž‘์—…)์— ๋Œ€ํ•ด ๋งํ•œ ๊ฑฐ๋ผ๋ฉด ์•„๋ฌด ์ผ๋„ ํ•˜์ง€ ์•Š๊ณ ,(์ฆ‰ ์•„๋ฌด ๋™์ž‘ํ•˜์ง€ ์•Š๊ณ ) CPU ๊ฐ€ ์ผ์„ ํ•˜๋Š”์ง€ ์•ˆ ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ๋ฌป๋Š” ๊ฑฐ๋ฉด ๋‹น์—ฐํžˆ ๋‹ค๋ฅธ ์ผ์„ ํ•œ๋‹ค๊ณ  ๋Œ€๋‹ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

์Šค๋ ˆ๋“œ sleep ์„ ํ•˜๊ฒŒ ๋˜๋ฉด ์Šค๋ ˆ๋“œ๋Š” os ๋Œ€๊ธฐ ํ๋กœ ๊ฐ€๊ณ  ๋ช…์‹œํ•œ ์‹œ๊ฐ„ ๋™์•ˆ ์ž ๋“ค์–ด ์žˆ๋Š” ์ƒํƒœ๋ผ ๋™์ž‘์„ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ์ด ์Šค๋ ˆ๋“œ๋Š” CPU ์ ์œ ๋ฅผ ๋‚ด๋†“๊ณ , ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ๋Œ์•„ ๊ฐ”๊ธฐ์—, CPU๋Š” ๋‹ค๋ฅธ ์ผ์ด ์žˆ๋‹ค๋ฉด ๋‹ค๋ฅธ ์ผ์„ ํ–ˆ์„ ๊ฒ๋‹ˆ๋‹ค.(์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ ๋ฐœ์ƒ)

์ฆ‰, ์Šค๋ ˆ๋“œ๋Š” ์ž ๋“ค๊ณ , CPU๋Š” ๋Œ€๊ธฐ ํ์— ์žˆ๋Š” ๋‹ค๋ฅธ ์ž‘์—…์„ ํ–ˆ์„ ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. 



์›Œ์ปค์„œ๋ฒ„์˜ CPU ์ƒ์Šน๋ฅ ์ด ๊ณ„์† 99% ์— ์ž„๋ฐ•ํ–ˆ๋˜ ์ด์œ ๋„, ํ์— ํ•  ์ž‘์—…๋“ค์ด ๋งŽ๊ธฐ๋•Œ๋ฌธ์— ์•„๋ฌด๋ฆฌ ์Šค๋ ˆ๋“œ sleep ์„ ํ•œ ๋‹ค ํ•ด๋„ ํ•ด์•ผํ•  ์ผ์ด ์‚ฐ๋”๋ฏธ์ฒ˜๋Ÿผ ์Œ“์˜€๊ธฐ ๋•Œ๋ฌธ์ด๋ผ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. CPU ๊ฐ€ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ ์ ˆ์–‘๋ณด๋‹ค ๋” ๋งŽ์€ ์ž‘์—…๋“ค์ด ๋Œ€๊ธฐํ•˜๊ณ  ์žˆ์—ˆ๊ธฐ์— ์‚ฌ์šฉ๋ฅ ์ด ๊ณ„์† 100% ๊ฐ€๊นŒ์ด ๋ชจ๋‹ˆํ„ฐ๋ง ๋œ๊ฑฐ๋ผ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

 

 


 

๐Ÿ’ Thread.Sleep() ๋™์ž‘ ๋ฐฉ์‹

Thread.Sleep(milliseconds)๋Š” ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ์Šค๋ ˆ๋“œ๋ฅผ ์ง€์ •๋œ ์‹œ๊ฐ„ ๋™์•ˆ ๋Œ€๊ธฐ ์ƒํƒœ(Wait)๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • Sleep ํ˜ธ์ถœ ์‹œ ํ•ด๋‹น ์Šค๋ ˆ๋“œ๋Š” CPU ์ ์œ ๊ถŒ์„ OS ์Šค์ผ€์ค„๋Ÿฌ์— ๋ฐ˜๋‚ฉํ•ฉ๋‹ˆ๋‹ค.
  • ์Šค๋ ˆ๋“œ๋Š” ํƒ€์ž„์•„์›ƒ์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ์‹คํ–‰ ๋Œ€๊ธฐ ํ(Ready Queue)์—์„œ ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค.
  • ์ง€์ •๋œ ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ๋‹ค์‹œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๋กœ ๋ฐ”๊ฟ”์ค๋‹ˆ๋‹ค.

 

 

 

Thread.Sleep() ํ˜ธ์ถœ ์‹œ ์Šค๋ ˆ๋“œ์˜ ์ƒํƒœ ๋ณ€ํ™”

  1. ํ•ด๋‹น ์Šค๋ ˆ๋“œ๋Š” OS ์Šค์ผ€์ค„๋Ÿฌ์— ์˜ํ•ด Waiting(๋Œ€๊ธฐ) ์ƒํƒœ๋กœ ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค.
  2. ์ง€์ •ํ•œ ์‹œ๊ฐ„ ๋™์•ˆ CPU ์‹คํ–‰ ํ์—์„œ ์ œ์™ธ๋˜๋ฉฐ, ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

CPU์˜ ๋™์ž‘

  1. Sleep์œผ๋กœ ๋น„์›Œ์ง„ CPU ํƒ€์ž„์Šฌ๋ผ์ด์Šค๋Š” ์ค€๋น„ ์ƒํƒœ(Ready)์— ์žˆ๋Š” ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  2. OS ์Šค์ผ€์ค„๋Ÿฌ๋Š” ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋ฅผ ์‹คํ–‰์‹œ์ผœ CPU๊ฐ€ ๊ฐ€๋Šฅํ•œ ํ•œ ์‰ฌ์ง€ ์•Š๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์ž…๋‹ˆ๋‹ค.

CPU ์‚ฌ์šฉ๋ฅ ์ด ๋†’๊ฒŒ ์œ ์ง€๋˜๋Š” ์ด์œ 

  1. Sleep์€ "ํ•ด๋‹น ์Šค๋ ˆ๋“œ๋งŒ" ๋ฉˆ์ถ”๊ฒŒ ํ•˜๋ฏ€๋กœ, ๋Œ€๊ธฐ ํ์— ์ž‘์—…์ด ์ถฉ๋ถ„ํžˆ ๋งŽ์œผ๋ฉด CPU๋Š” ๋‹ค๋ฅธ ์ž‘์—…์„ ๊ณ„์† ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋”ฐ๋ผ์„œ ์ž‘์—… ๋Œ€๊ธฐ์—ด์ด ํฌํ™” ์ƒํƒœ๋ผ๋ฉด Sleep์ด ์žˆ์–ด๋„ CPU ์‚ฌ์šฉ๋ฅ ์€ ์—ฌ์ „ํžˆ 100%์— ๊ฐ€๊น๊ฒŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค

 

 

Sleep์€ "ํ•ด๋‹น ์Šค๋ ˆ๋“œ"์˜ CPU ์ ์œ ์œจ์„ ๋‚ฎ์ถ”๋Š” ๋ฐฉ๋ฒ•์ด์ง€, ์ „์ฒด ์‹œ์Šคํ…œ CPU ์‚ฌ์šฉ๋ฅ ์„ ๋ฌด์กฐ๊ฑด ๋‚ฎ์ถ”๋Š” ๋ฐฉ๋ฒ•์€ ์•„๋‹™๋‹ˆ๋‹ค.

CPU ์‚ฌ์šฉ๋ฅ ์„ ๋‚ฎ์ถ”๋ ค๋ฉด Sleep ์™ธ์—๋„ ์‹คํ–‰ ๋Œ€๊ธฐ ์Šค๋ ˆ๋“œ ์ˆ˜๋ฅผ ์ค„์ด๋Š” ๊ตฌ์กฐ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

 


โœจThread.Sleep() ๋ฅผ ์‹ค๋ฌด์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ์ผ€์ด์Šค

Thread.Sleep() ์‹ค๋ฌด์—์„œ ์ด๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋‹ค์–‘ํ•œ ์ผ€์ด์Šค๋ฅผ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


์ผ๋ฐ˜์ ์ธ ์ƒํ™ฉ์—์„  Sleep์€ CPU ์‚ฌ์šฉ๋ฅ ์„ ๋‚ฎ์ถ”๋Š” ๋ฐ ์œ ํšจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

// ์ž˜๋ชป๋œ ์˜ˆ: CPU๋ฅผ ๊ณ„์† 100% ์ ์œ 
while (true)
{
    DoNothing();
}

// ๊ฐœ์„ ๋œ ์˜ˆ: Sleep์œผ๋กœ CPU ๋ถ€ํ•˜ ๊ฐ์†Œ
while (true)
{
    DoNothing();
    Thread.Sleep(10); // 10ms ํœด์‹ → CPU ๋‹ค๋ฅธ ์ž‘์—… ์‹คํ–‰ ๊ฐ€๋Šฅ
}

 

Sleep์ด CPU ์‚ฌ์šฉ๋ฅ ์„ ๋‚ฎ์ถ”๋Š” ์ด์œ ๋Š” ๋‹จ์ˆœํ•ฉ๋‹ˆ๋‹ค.(์ „์ œ ์กฐ๊ฑด์œผ๋กœ Ready Queue์— ์‹คํ–‰ ๋Œ€๊ธฐ ์Šค๋ ˆ๋“œ๊ฐ€ ๊ฑฐ์˜ ์—†๊ฑฐ๋‚˜ ์•„์˜ˆ ์—†์Œ)

  • ๋ฌดํ•œ ๋ฃจํ”„์—์„œ Sleep ์—†์ด ์—ฐ์‚ฐํ•˜๋ฉด ์Šค๋ ˆ๋“œ๊ฐ€ ํ•ญ์ƒ ์‹คํ–‰ ์ƒํƒœ์— ์žˆ์–ด CPU ์ ์œ ์œจ์ด ์ƒ์Šนํ•ฉ๋‹ˆ๋‹ค.
  • Sleep์„ ๋„ฃ์œผ๋ฉด ํ•ด๋‹น ์Šค๋ ˆ๋“œ๊ฐ€ Wait ์ƒํƒœ๋กœ ๋น ์ ธ CPU ์ ์œ ๊ถŒ์„ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ/ํ”„๋กœ์„ธ์Šค์— ์–‘๋ณดํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ, Sleep ์ฃผ๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ์งง์œผ๋ฉด (์˜ˆ: Sleep(1)์„ ๊ณผ๋„ํ•˜๊ฒŒ ํ˜ธ์ถœ) ์˜คํžˆ๋ ค ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ ํšŸ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•ด CPU ๋ถ€ํ•˜๊ฐ€ ๋†’์•„์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” OS ์Šค์ผ€์ค„๋Ÿฌ ์˜ค๋ฒ„ํ—ค๋“œ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

 


์œ„์™€ ๊ฐ™์€ ๊ฒฝ์šฐ Sleep์„ ํ˜ธ์ถœํ•˜๋ฉด ํ•ด๋‹น ์Šค๋ ˆ๋“œ๊ฐ€ Waiting ์ƒํƒœ๋กœ ์ „ํ™˜๋˜๊ณ , Ready Queue์—๋„ ๋‚จ์•„ ์žˆ๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ ์—†์œผ๋‹ˆ CPU๋Š” ์‹คํ–‰ํ•  ์ž‘์—…์ด ์—†์Šต๋‹ˆ๋‹ค.
CPU๋Š” ์ด๋•Œ Idle ์ƒํƒœ(๋Œ€๊ธฐ ์ƒํƒœ)๋กœ ๋“ค์–ด๊ฐ€๋ฉฐ, ์ „๋ ฅ ์†Œ๋ชจ์™€ ์‚ฌ์šฉ๋ฅ ์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.
์ด๋Ÿฐ ์ƒํ™ฉ์ด ๋ฌดํ•œ ๋ฃจํ”„ + Sleep ํŒจํ„ด์—์„œ CPU ์ ์œ ์œจ์„ ๋‚ฎ์ถ”๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค.

 


 

โœ…์‹ค๋ฌด ์ ์šฉ ์‚ฌ๋ก€

์‚ฌ๋‚ด ์†”๋ฃจ์…˜ ๋Œ€ํ•ด ํŒŒ์•…ํ•ด๋ณด๋‹ˆ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋„ค ๊ฐ€์ง€ ๋Œ€ํ‘œ ์‚ฌ์šฉ ์ผ€์ด์Šค๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

 

1๏ธโƒฃ CPU ๋ถ€ํ•˜ ์กฐ์ ˆ (Throttling)

๋ณ‘๋ ฌ ์ž‘์—…(Parallel.ForEach ๋“ฑ) ์ˆ˜ํ–‰ ์‹œ CPU๋ฅผ ๊ณผ๋„ํ•˜๊ฒŒ ์ ์œ ํ•˜์ง€ ์•Š๋„๋ก Sleep์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Parallel.ForEach(GetExportedTypes(assembly), (type) => {
    if (!RegisterGlobalProperty(type)) {
        RegisterGlobalFeature(type);
    }
    Thread.Sleep(1); // CPU ์Šค๋กœํ‹€๋ง + ์Šค๋ ˆ๋“œ ์–‘๋ณด
});

๋ชฉ์ 

  1. CPU ๊ณผ์ ์œ  ๋ฐฉ์ง€
  2. ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ ์‹คํ–‰ ๊ธฐํšŒ ์ œ๊ณต (์–‘๋ณด)

2๏ธโƒฃ์™ธ๋ถ€ ์ปดํฌ๋„ŒํŠธ/๋„คํŠธ์›Œํฌ ์š”์ฒญ ๊ฐ„๊ฒฉ ์กฐ์ ˆ

์™ธ๋ถ€ ์ปดํฌ๋„ŒํŠธ์—์„œ๋Š” ์˜๋„์ ์œผ๋กœ๋“ , ์„ฑ๋Šฅ์ƒ ์ด์Šˆ ๋•Œ๋ฌธ์ด๋“  ํŠธ๋ž˜ํ”ฝ์„ ์ œํ•œํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. 
์™ธ๋ถ€ ์ปดํฌ๋„ŒํŠธ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์šฐ๋ฆฌ ํšŒ์‚ฌ๋งŒ์ด ์žˆ๋Š” ๊ฒŒ ์•„๋‹ˆ๊ธฐ๋„ ํ•˜๊ณ , ์ธํ„ฐ๋„ท ๋Œ€์—ญํญ์˜ ์ œํ•œ๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ ์ ˆํ•œ ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
์งง์€ ์‹œ๊ฐ„ ๋‚ด ๊ณผ๋„ํ•œ ์š”์ฒญ์€ ์„œ๋ฒ„ ๋ถ€ํ•˜, ๋„คํŠธ์›Œํฌ ๋Œ€์—ญํญ ๋ฌธ์ œ, ์‹ฌ์ง€์–ด ๋ฒค(Ban) ์ฒ˜๋ฆฌ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

//์™ธ๋ถ€ ์€ํ–‰ API ์š”์ฒญ

//์ „์ฒ˜๋ฆฌ ๋กœ์ง
sleep(30);
const result = rac.execute({ // ์™ธ๋ถ€ ํ†ต์‹ 
    set_cookies: e2e_auth_cookie,
    session_name: session_name,
    data: post_data,
});

3๏ธโƒฃ ์ฃผ๊ธฐ์  ์ž‘์—… ์‹คํ–‰

์ผ์ • ์ฃผ๊ธฐ๋งˆ๋‹ค ๋ฐ˜๋ณต๋˜๋Š” ์ž‘์—…์˜ ๊ฒฝ์šฐ Sleep์„ ํ™œ์šฉํ•ด ๋™์ž‘ ๊ฐ„๊ฒฉ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

// E2E ์žฌ์‹œ๋„ ๋กœ์ง
if (retry_count < 2) {
    retry_count++;
    sleep(5000); // 5์ดˆ ๋Œ€๊ธฐ ํ›„ ์žฌ์‹œ๋„
    return ActionResult.redirectToWorker(new ScrapingStartData(request));
}

4๏ธโƒฃํŠธ๋ž˜ํ”ฝ/๋ฉ”์‹œ์ง€ ๋ฐœํ–‰ ์†๋„ ์ œ์–ดํ•˜์—ฌ ๋ณ‘๋ชฉ ๋ฌธ์ œ ๋ฐœ์ƒ ๋ฐฉ์ง€

์งง์€ ์‹œ๊ฐ„๋‚ด์— ๋Œ€๊ทœ๋ชจ๋กœ ๋ฉ”์„ธ์ง€๋ฅผ ๋ฐœํ–‰ํ•˜๋ฉด Publisher  ๊ฐ€ ๊ฐ๋‹นํ•˜์ง€ ๋ชปํ•˜๊ณ  ์œ ์‹ค๋˜๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ ๋ฌธ์ œ์™€ ์„œ๋น„์Šค ์‹ ๋ขฐ๋„ ํ•˜๋ฝ ๋ฌธ์ œ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ Sleep์œผ๋กœ ๋ฐœํ–‰ ๊ฐ„๊ฒฉ์„ ์ฃผ์–ด ์•ˆ์ •์„ฑ์„ ํ™•๋ณดํ•˜์—ฌ, Publisher  ๊ฐ€ ์œ ์‹ค ์—†์ด ๋ฉ”์„ธ์ง€๋ฅผ ๋ฐœํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

// ๋ฉ”์„ธ์ง€ ๋ฐœํ–‰
sleep(sleep_time);
ActionResult.redirectToWorker(new CreateInventory(data));

๐Ÿ’ก๋งˆ๋ฌด๋ฆฌ

Thread.Sleep()์€ ๋‹จ์ˆœํžˆ "์ž ๊น ์‰ฌ๋Š”" ๋ฉ”์„œ๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ, ์Šค๋ ˆ๋“œ ์Šค์ผ€์ค„๋ง๊ณผ CPU ์ž์› ๊ด€๋ฆฌ์— ์ง์ ‘์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.
์‹ค๋ฌด์—์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฝ์šฐ์— ์ฃผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • ๋ณ‘๋ ฌ ์ž‘์—… ์‹œ CPU ๊ณผ์ ์œ  ๋ฐฉ์ง€
  • ์™ธ๋ถ€ ์„œ๋น„์Šค ํ˜ธ์ถœ ๊ฐ„๊ฒฉ ์ œํ•œ
  • ์ฃผ๊ธฐ์  ์ž‘์—… ๊ฐ„๊ฒฉ ๋ณด์žฅ
  • ํŠธ๋ž˜ํ”ฝ/๋ฉ”์‹œ์ง€ ๋ฐœํ–‰ ์†๋„ ์ œ์–ด

ํ•˜์ง€๋งŒ, ์ž˜๋ชป๋œ Sleep ์‚ฌ์šฉ์€ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ,
Sleep ์ฃผ๊ธฐ์™€ ๋ชฉ์ ์„ ๋ช…ํ™•ํžˆ ์„ค๊ณ„ํ•˜๊ณ , ๊ฐ€๋Šฅํ•œ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ๋ฐฉ์‹๊ณผ ๋ณ‘ํ–‰ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ด์ƒ์ ์ž…๋‹ˆ๋‹ค.

 

๋Œ“๊ธ€