λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

Dev.log/Node.js

[Node.js κ΅κ³Όμ„œ] #12. cluster

cluster λͺ¨λ“ˆμ€ μ‹±κΈ€ μŠ€λ ˆλ“œμΈ λ…Έλ“œκ°€ CPU 코더λ₯Ό λͺ¨λ‘ μ‚¬μš©ν•  수 있게 ν•΄μ£ΌλŠ” λͺ¨λ“ˆμ΄λ‹€. 포트λ₯Ό κ³΅μœ ν•˜λŠ” λ…Έλ“œ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ—¬λŸ¬ 개 λ‘˜ μˆ˜λ„ μžˆμ–΄ μš”μ²­μ΄ 많이 듀어왔을 λ•Œ λ³‘λ ¬λ‘œ μ‹€ν–‰λœ μ„œλ²„μ˜ 개수만큼 μš”μ²­μ΄ λΆ„μ‚°λ˜κ²Œ ν•  수 μžˆλ‹€. μ„œλ²„μ— 무리가 덜 κ°€κ²Œ λ˜λŠ” μ…ˆμ΄λ‹€. 예λ₯Ό λ“€μ–΄, μ½”μ–΄κ°€ 8개인 μ„œλ²„κ°€ μžˆμ„ λ•Œ, λ…Έλ“œλŠ” 보톡 μ½”μ–΄λ₯Ό ν•˜λ‚˜λ§Œ ν™œμš©ν•œλ‹€. ν•˜μ§€λ§Œ cluster λͺ¨λ“ˆμ„ μ„€μ •ν•˜μ—¬ μ½”μ–΄ ν•˜λ‚˜λ‹Ή λ…Έλ“œ ν”„λ‘œμ„ΈμŠ€ ν•˜λ‚˜κ°€ λŒμ•„κ°€κ²Œ ν•   수 μžˆλ‹€. μ„±λŠ₯이 κΌ­ 8λ°°κ°€ λ˜λŠ” 것은 μ•„λ‹ˆμ§€λ§Œ μ½”μ–΄λ₯Ό ν•˜λ‚˜λ§Œ μ‚¬μš©ν•  λ•Œμ— λΉ„ν•΄ μ„±λŠ₯이 κ°œμ„ λœλ‹€. ν•˜μ§€λ§Œ μž₯점만 μžˆλŠ” 것은 μ•„λ‹ˆλ©°, μ„Έμ…˜μ„ κ³΅μœ ν•˜μ§€ λͺ»ν•˜λŠ” λ“±μ˜ 단점도 μžˆλ‹€. μ΄λŠ” Redis λ“±μ˜ μ„œλ²„λ₯Ό λ„μž…ν•˜μ—¬ ν•΄κ²°ν•  수 μžˆλ‹€.

 

 

μœ„μ˜ server1.js을 ν΄λŸ¬μŠ€ν„°λ§ν•΄λ³΄μž.

 

 

ν΄λŸ¬μŠ€ν„°μ—λŠ” λ§ˆμŠ€ν„° ν”„λ‘œμ„ΈμŠ€μ™€ μ›Œμ»€ ν”„λ‘œμ„ΈμŠ€κ°€ μžˆλ‹€. λ§ˆμŠ€ν„° ν”„λ‘œμ„ΈμŠ€λŠ” CPU 개수만큼 μ›Œν¬ ν”„λ‘œμ„ΈμŠ€λ₯Ό λ§Œλ“€κ³ , 8085번 ν¬νŠΈμ—μ„œ λŒ€κΈ°ν•œλ‹€. μš”μ²­μ΄ λ“€μ–΄μ˜€λ©΄ λ§Œλ“€μ–΄μ§„ μ›Œμ»€ ν”„λ‘œμ„ΈμŠ€μ— μš”μ²­μ„ λΆ„λ°°ν•œλ‹€. 

μ›Œμ»€ ν”„λ‘œμ„ΈμŠ€κ°€ μ‹€μ§ˆμ μΈ 일을 ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€μ΄λ‹€. 이 μ½”λ“œλ₯Ό 돌리고 μžˆλŠ” μ»΄ν“¨ν„°μ˜ CPU μ½”μ–΄μ˜ κ°œμˆ˜κ°€ 12κ°œλΌμ„œ μ›Œμ»€ 12κ°œκ°€ μƒμ„±λ˜μ—ˆλ‹€. μ‹€μ œλ‘œ 12κ°œκ°€ μƒμ„±λ˜μ—ˆλŠ”μ§€ 확인할 수 μžˆλ‹€. μ•„λž˜μ™€ 같이 μ½”λ“œλ₯Ό μˆ˜μ •ν•˜κ³  μ‹€ν–‰ν•œλ‹€.

 

 

cluster.jsλ₯Ό μ‹œμž‘ν–ˆμ„ λ•Œ

 

localhost:8085에 μ ‘μ†ν–ˆμ„ λ•Œ - 1초 ν›„ μ½˜μ†”μ— μ›Œμ»€κ°€ μ’…λ£Œλ˜μ—ˆλ‹€λŠ” λ©”μ„Έμ§€ 확인

 

12번 μƒˆλ‘œκ³ μΉ¨ν•˜κ³  λ‚˜λ©΄ λͺ¨λ“  μ›Œμ»€κ°€ μ’…λ£Œλ˜μ–΄ μ„œλ²„κ°€ μ‘λ‹΅ν•˜μ§€ μ•ŠλŠ”λ‹€.

 

즉, 12λ²ˆκΉŒμ§€λŠ” 였λ₯˜κ°€ λ°œμƒν•΄λ„ μ„œλ²„κ°€ 정상 μž‘λ™ν•  수 μžˆλ‹€λŠ” λœ»μ΄λ‹€. μ’…λ£Œλœ μ›Œμ»€λ₯Ό λ‹€μ‹œ 켜면 였λ₯˜κ°€ λ°œμƒν•΄λ„ 계속 버틸 수 μžˆλ‹€. μ›Œμ»€ ν”„λ‘œμ„ΈμŠ€κ°€ μ’…λ£Œλ˜μ—ˆμ„ λ–„ μƒˆλ‘œ ν•˜λ‚˜λ₯Ό μƒμ„±ν•΄λ³΄μž.

 

 

cluster.js μ‹€ν–‰ν–ˆμ„ λ•Œ

 

localhost:8085 μ ‘μ†ν–ˆμ„ λ•Œ - 31232번 μ›Œμ»€κ°€ μ’…λ£Œλœ ν›„ 37360 μ›Œμ»€κ°€ 싀행됨

 

이제 μ›Œμ»€κ°€ 죽을 λ•Œλ§ˆλ‹€ μƒˆλ‘œμš΄ μ›Œμ»€κ°€ ν•˜λ‚˜ 더 μƒμ„±λœλ‹€. ν•˜μ§€λ§Œ μ΄λŸ¬ν•œ λ°©μ‹μœΌλ‘œ 였λ₯˜λ₯Ό λ§‰μœΌλ €λŠ” 것은 μ’‹μ§€ μ•Šμ€ 생각이닀. 였λ₯˜ 자체의 원인을 μ°Ύμ•„ ν•΄κ²°ν•΄μ•Ό ν•œλ‹€. κ·Έλž˜λ„ 예기치 λͺ»ν•œ μ—λŸ¬λ‘œ 인해 μ„œλ²„κ°€ μ’…λ£Œλ˜λŠ” ν˜„μƒμ„ λ°©μ§€ν•  수 μžˆμ–΄ ν΄λŸ¬μŠ€ν„°λ§μ„ μ μš©ν•΄λ‘λŠ” 것이 μ’‹λ‹€.

직접 cluster λͺ¨λ“ˆλ‘œ ν΄λŸ¬μŠ€ν„°λ§μ„ κ΅¬ν˜„ν•  μˆ˜λ„ μžˆμ§€λ§Œ, μ‹€λ¬΄μ—μ„œλŠ” pm2 λ“±μ˜ λͺ¨λ“ˆλ‘œ cluster κΈ°λŠ₯을 μ‚¬μš©ν•˜κ³€ ν•œλ‹€.