JVM Troubleshooting - redutan/redutan.github.io GitHub Wiki
$ kill -3 [pid] > [filename]
$ jstack [pid] > [filename]
- ์ฐ๋ ๋๋คํ๋ ์ต์ 3๋ฒ ์ด์ ๋ฌ๋ค.
- ์ฐ๋ ๋๋คํ๋ ์ฅ์ ์ ๋ฌ๋ค.
- ์ฐ๋ ๋ ๋จ๋ฉด ์์ฑ ์๊ฐ ์ ๋ณด
- JVM์ ๋ํ ์ ๋ณด
- ๊ฐ ์ฐ๋ ๋์ ์คํ ์ ํฌํจํ ๋ค์ํ ์ ๋ณด
- Deadlock์ ๋ํ ์ ๋ณด
- ํ ์์ญ์ ์ฌ์ฉ ํํฉ (JDK 6~)
์ฐ๋ ๋ ์ํ | ์ค๋ช | ๋น๊ณ |
---|---|---|
NEW | ์ฐ๋ ๋๊ฐ ์์ง ์์๋์ง ์์ ์ํ | |
RUNNABLE | ์ฐ๋ ๋๊ฐ ์ํ์ค์ธ ์ํ | ์ฃผ์ฅ์ ์์ |
BLOCKED | ์ฐ๋ ๋๊ฐ ์ ๊ฒจ ์์ด ํ๋ฆฌ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ํ | ์ฃผ์ฅ์ ์์ |
WAITING | ๋ค๋ฅธ ์ฐ๋ ๋๊ฐ ํน์ ์์ ์ ์ํํ์ฌ ๊นจ์ธ ๋๊น์ง ๋ฌดํ์ ๊ธฐ๋ค๋ฆฌ๋ ์ํ | |
TIMED_WAITING | ๋ค๋ฅธ ์ฐ๋ ๋๊ฐ ํน์ ์์ ใ ๋ฅด ์ํํ์ฌ ๊นจ์ธ ๋๊น์ง ์ง์ ๋ ์๊ฐ๋งํผ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ์ํ | |
TERMINATED | ์ฐ๋ ๋๊ฐ ์ข ๋ฃ๋ ์ํ |
ํด์ Thread Logic์ถ์ฒ
- ๋ค์ํ ์์ธ์ด ์์
- ์ฃผ๋ก memory leak ๋ ๋๋ฌด ํฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๊ตฌํ๋ ๊ฒฝ์ฐ
- ์ฝ๋ ์์ญ์ด๊ธฐ ๋๋ฌธ์ ๋๋ฆฌ๋๊ฒ ๋ต
-XX:MaxPermSize
- ๋ฐฐ์ด์ด ๋๋ฌด ํด ์
- OS ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ์
- JNI๋ Native ์ฝ๋์์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ์ค๋ฅ๊ฐ ์๊ธธ ๋ ๋ฐ์
- hs_err_xxx ๋ผ๋ Fatal ์๋ฌ ๋ก๊ทธ๊ฐ ๋ฐ์ํ๋ฉด์ ์ฃฝ๋ ๊ฒฝ์ฐ.
- ๋ฐ๋์ ๋ฉ๋ชจ๋ฆฌ ๋ฌธ์ ๋ง์ผ๋ก ์ด๋ฌํ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ์๋
- ํด๋น ์๋ฌ ๋ก๊ทธ ๋ถ์ ๋ฐฉ๋ฒ์ Troubleshooting Guide for Java SE 6 with HotSpotVM Or โ์๋ฐ ํธ๋ฌ๋ธ ์ํ ๊ฐ์ด๋โ ์ฐธ์กฐ.
vmstat ๋ช
๋ น์ด ์ฒ๋ผ JVM์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ํ์ธํ๋ ๋ช
๋ น์ด
$JAVA_HOME/bin ์ ์กด์ฌ
jstat -gcutil [pid] 1s
: 1์ด๋น Java ๋ฉ๋ชจ๋ฆฌ ์ํ ํ์ธ
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
...
ex) YG ์์ญ์ด ์ ์์ธ์ง ๋น์ ์์ธ ์ง๋ GC ์ดํ์ 60% ์ดํ๋ผ๋ฉด ๊ด์ฐฎ๋ค๊ณ ํ๋จ
jstat -gccapacity [pid]
: kb ๋จ์๋ก java ๋ฉ๋ชจ๋ฆฌ ์ํ ํ์ธ
MGCNM NGCMX NGC S0C S1C EC OGCNM OGCMX OGC OC PGCNM PGCMX PGC PC YGC FGC
...
jmap -dump:format=b,file=[filename.hprof] [pid]
jmap์ผ๋ก ์คํจํ ์
- gcore ์์ฑ:
gcore โo [filename] [pid]
- gcore๋ฅผ ํ๋คํ๋ก ๋ณํ:
jmap โdump:format=b,file=[filename] [javabin์์น] [gorefilename]
- MAT (Eclipse Memory Analyzer): https://eclipse.org/mat/ : ์ถ์ฒ(๋ฌด๋ฃ)
- IBM Heap Analyzer : ์ถ์ฒ(์์ฉ?)
์๋ฐ ์ต์ ์ ์ถ๊ฐํ๋ ๊ฒ ๋ง์ผ๋ก OOME๊ฐ ๋ฐ์ํ์ ๋ ์๋์ผ๋ก ๋คํ ์์ฑ ๊ฐ๋ฅ
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=[path]
- vmstat
- sar: ํต๊ณ ์ ๋ณด
- top: ์ค์๊ฐ
vmstat 1 5
- ps
- pstree
- pmap
- df
df -kh
- du
-
du --max-depth=2 /run
: /run ์ด๋ผ๋ ๋๋ ํ ๋ฆฌ ์ฌ์ฉ๋ ํ์ธ
-
- iostat
iostat -x
iostat -xd
- lsof
-
lsof | grep [pid]
: ํด๋น PID๊ฐ ์ฐ๊ณ ์๋ ํ์ผ๋ช ์ ์ ์ ์์
-