๋“ค์–ด๊ฐ€๋ฉฐ

  • ์„œ๋ฒ„๋ฅผ ์šด์˜ํ•˜๋ฉด์„œ ๊ฐ‘์ž๊ธฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ ์–ด๋Š ๋ถ€๋ถ„๋ถ€ํ„ฐ ํ™•์ธํ•ด์•ผ ์ข‹์„๊นŒ?
    • ์—ฌ๋Ÿฌ ๋ถ€๋ถ„์„ ์ฒด๊ณ„์ ์ด์ง€ ์•Š๊ฒŒ ํ™•์ธํ•ด์™”๋˜ ์ง€๋‚œ ๋‚ ์„ ํšŒ๊ณ ํ•˜๊ณ ,
    • ์–ด๋Š ๋ถ€๋ถ„๋ถ€ํ„ฐ ๋‹จ๊ณ„์ ์œผ๋กœ ๋ด์•ผํ•˜๋Š”์ง€ ์ข‹์€ ๊ฐ€์ด๋“œ ๊ธ€์ด ์žˆ์–ด ๊ณต์œ ํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค.
    • ์ œ๊ฐ€ ์ง์ ‘ ๋ฌธ์ œ๋ฅผ ๊ฒช์œผ๋ฉฐ ํ™•์ธํ•ด์•ผ ํ•  ๋ถ€๋ถ„์„ ๋ช‡ ๊ฐ€์ง€ ๋” ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

How to Trouble Shooting?๐Ÿง

Step A์—์„œ C๋กœ ๊ฐˆ์ˆ˜๋ก ์ทจ๋“ ๋น„์šฉ์ด ๋น„์‹ธ์ง‘๋‹ˆ๋‹ค.

Step A - ์‚ฌ์šฉ์ž ํ˜„์ƒํŒŒ์•…

  • 503 / 500 ERROR ?
  • ๋ฌด์‘๋‹ต / ๋Š๋ฆฐ ์‘๋‹ต ?
  • ์˜ˆ์ƒ๊ณผ๋Š” ๋‹ค๋ฅธ Application ๋™์ž‘
    • Ex) ๊ฐ„ํ—์  ์ธ์ฆ ์‹คํŒจ

Step B - ์„œ๋ฒ„ ์ƒํƒœ ํŒŒ์•…

  • Application Server
    • CPU ์‚ฌ์šฉ๋ฅ 
    • Memory ์‚ฌ์šฉ๋ฅ (Swap ์‚ฌ์šฉ์—ฌ๋ถ€)
    • Disk ์šฉ๋Ÿ‰, I/O
    • Network : Inbound, OutBound
  • ์—ฐ๊ณ„์„œ๋ฒ„ ์ƒํƒœ (Database ์„œ๋ฒ„, Cache ์„œ๋ฒ„)
    • CPU ์‚ฌ์šฉ๋ฅ 
    • Memory ์‚ฌ์šฉ๋ฅ (Swap ์‚ฌ์šฉ์—ฌ๋ถ€)
    • Disk ์šฉ๋Ÿ‰, I/O
    • Network : Inbound, OutBound

Step C - Application์˜ ์ •๋ณด ํŒŒ์•…

  • Application Server Log
    • OOM(Out of Memory)๋“ฑ ์ „ํ˜•์ ์ธ Fatal ์—ฌ๋Ÿฌ ๋ฐœ์ƒ ์—ฌ๋ถ€
    • ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ ์Šคํƒ
  • ์—ฐ๊ณ„ Server Log
    • ์ถ”๊ฐ€์ ์œผ๋กœ ์—ฐ๊ณ„ ์„œ๋ฒ„์—์„œ๋งŒ ํ™•์ธ๊ฐ€๋Šฅํ•œ Metric ํ™•์ธ
    • Ex) Elastic Search(Reject Exception)
  • ๋ณ€๊ฒฝ๋œ ์†Œ์Šค์ฝ”๋“œ
  • WAS์˜ ์ฃผ์š” ์„ค์ •
  • Web Server์˜ ์ฃผ์š” ์„ค์ •
  • GC Option & Log
  • Thread Stack Dump
  • Heap Dump
  • ์‹คํ–‰๊ฒฝ๋กœ ํ”„๋กœํŒŒ์ผ๋ง

๋Œ€๋ถ€๋ถ„ ์ด๋Ÿฐ ๋ฌธ์ œ์˜ ๊ณตํ†ต์ ์€..?

  • ๊ฐœ๋ฐœํ™˜๊ฒฝ์—์„œ๋Š” ๊ดœ์ฐฎ์•˜์–ด์š”.
  • ์šด์˜ํ™˜๊ฒฝ์—์„œ๋„ ํ‰์†Œ์—๋Š” ๊ดœ์ฐฎ์•˜์–ด์š”.
  • ํ•˜์ง€๋งŒ?
    • ๋ฌธ์ œ๊ฐ€ ๋ถˆ๊ทœ์น™์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๋„ค์š”.
    • ๋ถ€ํ•˜๊ฐ€ ๋ชฐ๋ฆฌ๋ฉด ์ด์ƒํ•ด์ ธ์š”.

์ˆ˜์ค€ ๋†’์€ ์ง€์› ์š”์ฒญ์€ ์–ด๋–ป๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ธ๊ฐ€?

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

๋ฌธ์ œ์— ๋Œ€ํ•œ ์ •๋ณด๋Š” ์–ด๋–ป๊ฒŒ ์ œ๊ณตํ•ด์•ผ ํ• ๊นŒ?

  • ํ•ด๋‹น ์ฆ์ƒ ์žฌํ˜„ ์กฐ๊ฑด
  • ์‚ฌ์šฉ์ž์—๊ฒŒ ํ•ญ์ƒ / ๊ฐ„ํ—์ ์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋Š”์ง€?
  • ์ผ๋ถ€ / ์ „์ฒด ์„œ๋ฒ„์— ๋‚˜ํƒ€๋‚˜๋Š”์ง€..?
    • ์ „์ฒด ์„œ๋ฒ„ : ๊ณตํ†ต ์ž์›๊ณผ ์„ค์ •
    • ์ผ๋ถ€ ์„œ๋ฒ„ : Thread ์•ˆ์ •์„ฑ ๋ฌธ์ œ๋ฅผ ๋จผ์ € ์˜์‹ฌ

Example - ์ธํ”„๋ผ ์š”์†Œ ์„ค์ • ๋ฌธ์ œ

Problem Description

  • Step A
    • ์‚ฌ์šฉ์ž๊ฐ€ ๋ชฐ๋ฆด ์‹œ ๊ฐ„ํ—์  ๋Š๋ฆฐ ์‘๋‹ต
    • 500, 503 ERROR
  • Step B
    • Swapping ์˜์—ญ ์‚ฌ์šฉ.
  • Step C
    • ์žฆ์€ GC, OOM, Connection Pool์˜ getConnection()์—์„œ ๋Œ€๊ธฐ
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋“ฑ ๊ณต์šฉ ์™ธ๋ถ€ ์ž์›์—์„œ ๋ณ‘๋ชฉ์ด ์žˆ์„ ๋•Œ ๋ถ€์ ์ ˆํ•œ ์„ค์ • ๋•Œ๋ฌธ์— ์ƒํƒœ๋ฅผ ์•…ํ™”์‹œํ‚ค๊ฑฐ๋‚˜ ๋ฐฉ์–ดํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ์„œ๋ฒ„์—์„œ ๊ฐ™์€ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

How to solve?

Example - Memory Leak ๊ฒฝ๋กœ ์ œ๊ฑฐ

Problem Description

  • Step C
    • ์„œ๋ฒ„ ์˜ฌ๋ฆฐ์ง€ ์˜ค๋ž˜๋˜๋ฉด ์žฆ์€ GC, OOM

How to solve?

  • ์ฃผ๋กœ Cache ๋กœ์ง์—์„œ ๋ฐœ์ƒ
    • ํ•ด๋‹น ์„œ๋น„์ŠคํŒ€์—์„œ ์ง์ ‘ ๋งŒ๋“  Cache ๋กœ์ง์ด ์žˆ๋Š”๊ฐ€?
    • Cache ์šฉ๋Ÿ‰์˜ ํ•œ๋„๊ฐ’์ด ์ ์ ˆํ•œ๊ฐ€?
    • ๋ชจ๋“  ์„œ๋ฒ„์— ๊ฐ™์€ ํ˜„์ƒ์ด ๊ถ๊ทน์ ์œผ๋กœ ์ƒ๊น€.
  • Thread ๋ถˆ์•ˆ์ •์„ฑ์— ์˜ํ•œ Memory Leak
    • ์ผ๋ถ€ ์„œ๋ฒ„์—๋งŒ OOM ๋ฐœ์ƒ

Trouble Shooting Tool

์ •๋ฆฌํ•˜์ž๋ฉด?

  • Trouble Shooting์€ ๋ณตํ•ฉ์ ์ธ ์›์ธ์œผ๋กœ ๊ตฌ์„ฑ๋œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.
    • ๋‹จ์ˆœํžˆ ์ฆ์ƒ๋งŒ์œผ๋กœ ํŒ๋‹จํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
    • ์ข…ํ•ฉ์ ์œผ๋กœ ๋งŽ์€ ์ •๋ณด๋“ค์„ ์—ฐ๊ฒฐํ•ด์„œ ๋ด์•ผํ•ฉ๋‹ˆ๋‹ค.
    • ๊ฐ™์€ ๊ฒฐํ•จ์ด ๋‹ค๋ฅธ ์š”์ธ๊ณผ ์–ฝํžˆ๋ฉด ํ˜„์ƒ์ด ๋‹ค๋ฅด๊ฒŒ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.
    • ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ + ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ฝ”๋“œ
      • ์–‘์ชฝ์„ ๋‹ค ํ™•์ธํ•ด์•ผ ๋ฌธ์ œ ํŒŒ์•…์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
    • ๊ฐ™์€ ํ˜„์ƒ์ด๋ผ๋„ ๊ทผ๋ณธ์›์ธ์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ˆ˜์ง‘ ๋น„์šฉ์ด ์‹ผ ์ •๋ณด๋กœ ์›์ธ์„ ๋ฐํ˜€๋‚ผ ์ˆ˜ ์žˆ๋‹ค๋ฉด ํ•ด๊ฒฐ์ด ๋” ๋น ๋ฆ…๋‹ˆ๋‹ค.
    • ์‹ผ ๋น„์šฉ์œผ๋กœ ์ˆ˜์ง‘ํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋ณด๋ถ€ํ„ฐ ๋น ๋ฅด๊ฒŒ.
    • WAS์™€ DB์˜ ์ž์› ๋ชจ๋‹ˆํ„ฐ๋ง, ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ๊ทธ, ์†Œ์Šค ์Šคํƒ๋คํ”„
    • ํž™๋คํ”„๊นŒ์ง€ ๊ฐ€๋ฉด ์ทจ๋“/๋ถ„์„๋น„์šฉ์ด ๋” ๋น„์Œ‰๋‹ˆ๋‹ค.
  • Trouble Shooting ๋„๊ตฌ๋Š” ๋„๊ตฌ์ผ ๋ฟ
    • ๋„๊ตฌ ์ž์ฒด๊ฐ€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์ฃผ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.
      • ๋ฌธ์ œ ํ•ด์„, ์ถ”๋ก  ๊ณผ์ •์ด ๋” ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
    • Dump์—์„œ ๋‚˜์˜ค๋Š” ํด๋ž˜์Šค, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ์ง€์‹์ด ์žˆ์–ด์•ผ ๊ทผ๋ณธ ์›์ธ์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ›„๊ธฐ

  • ๊ฐœ๋ฐœ์ž๋Š” ROI(Return on investment)๋ฅผ ๋Š˜ ๊ณ ๋ฏผํ•˜๋ผ๋Š” ์กฐ์–ธ์„ ๋“ค์€ ์ ์ด ์žˆ๋‹ค.
  • ์ •์ƒํ˜๋‹˜ ์Šฌ๋ผ์ด๋“œ๋ฅผ ๋ณด๋ฉด์„œ ํ•˜๋‚˜์˜ ์ •๋ณด๋ฅผ ์–ป๋”๋ผ๋„ ROI๋ฅผ ์ƒ๊ฐํ•˜๊ณ  ์ฒด๊ณ„์ ์œผ๋กœ ํ™•์ธํ•ด๊ฐ€๋Š” ๊ฒƒ์„ ๋Š๋‚„ ์ˆ˜ ์žˆ์—ˆ๋‹ค.
  • ์Šฌ๋ผ์ด๋“œ๋ฅผ ๋ณด๋ฉด์„œ ์•„์ง ๋ชจ๋ฅด๋Š” ์šฉ์–ด์™€ ํ•ด๋ณธ ๊ฒฝํ—˜์ด ์—†๋Š” ๊ฒƒ๋“ค์ด ๋„ˆ๋ฌด ๋งŽ๊ธฐ์— ์ถ”๊ฐ€๋กœ ์ •๋ฆฌํ•ด๊ฐ€์•ผ๊ฒ ๋‹ค.

Reference