System Monitoring command

1. OS/system

$ vmstat 2 10                     // 10 system resource status to every 2 sec.

$ iostat 2 10                      // 10 I/O status to every 2 sec.

$ sar 2 10                          // 10 ??? status to every 2 sec.

$ ipcrm -m [Key]p 35020  //  Remove Shared Memory

$ netstat -n | grep EST | grep ‘:[PORT]’ | wc -l  //  count of connection list for port  (Web serverconnection count , DB connection count, …)

$ pstack [PID]                   // Process Stack Trace

$ ipcs -qu                         //  list to  message queue

$ ipcs -mob | grep 35020 //  show to Shared Memory

$ ipcrm -m [Key]p 35020  //  Remove to Shared Memory


2. Java process 

$ $JAVA_HOME/bin/jstack [PID]       // JVM Stack Trace [ Hotspot JDK ]  ( analysis to daed lock)

$ kill -3 [PID]                                            // JVM Stack Trace & Heap Dump [IBM JDK]  (analysis to  daed lock)

$ jmap -dump:format=b,file=heap.hprof [pid]  // runtime heap dump [ Hotspot JDK ]

$ jstat -gc -h20 [PID] 3000                            // JVM Heap 사용량 및 GC(garbage collection) 통계

ps -mo pid,lwp,stime,time,pcpu -C java | more  // java 프로세스의 쓰레드별 CPU 사용량 확인

 * java thread dump 분석할때는 일정주기(5초) 10회정도 dump를 해서 비교 분석해야 한다. 

 * 참고 : http://architects.dzone.com/articles/how-analyze-java-thread-dumps

3. Java Heap Dump 분석 툴 : jstat, jmap, jhat, visualvm, jconsole, MemoryAnalyzer