Linux System 분석 관련 명령어
uptime
1
2
dotori17@PS-PERSNAL:~$ uptime
23:23:45 up 8:40, 0 users, load average: 0.52, 0.58, 0.59
- 서버가 시작한지 얼마나 되는지 확인
- load average (1분, 5분, 15분 평균값) :
0에 가까울수록 좋음.
1분 평균이 5분, 15분 평균보다 높다면 상황이 지속적으로 발생 중인 상태
dmesg
1
2
dotori17@PS-PERSNAL:~$ dmesg | tail
[ 0.010928] Microsoft 4.4.0-19041.1151-Microsoft 4.4.35
- 시스템 메시지를 확인
vmstat 1
1
2
3
4
5
6
7
dotori17@PS-PERSNAL:~$ vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
Error: /proc must be mounted
To mount /proc at boot you need an /etc/fstab line like:
proc /proc proc defaults
In the meantime, run "mount proc /proc -t proc"
- 가상 메모리의 상황 확인
- 각 항목 확인
- r : cpu의 Run Queue, cpu가 바빠서 자기 차례를 기다리는 프로세스 갯수 cpu 코어 갯수보다 많으면 서버가 아주 바쁜 상황이라 판단!
- free : kb 단위의 메모리 여유, 가용 메모리가 많은지 확인 필요
- swap : 메모리 부족시 디스크를 메모리로 사용하는 영역 (이 영역은 사용하지 않아야만 좋음.)
- si (swap in)
- so (swap out)
- cpu : 아래 항목중 어떤 값이 높은지 확인
- us : user cpu
- sy : system cpu
- wa : wait I/O cpu
- st : stolen time
mpstat -P ALL 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
dotori17@PS-PERSNAL:~$ mpstat -P ALL 1
Linux 4.4.0-19041-Microsoft (PS-PERSNAL) 08/31/21 _x86_64_ (8 CPU)
00:08:27 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
00:08:28 all 0.50 0.00 4.01 0.00 0.00 0.00 0.00 0.00 0.00 95.49
00:08:28 0 0.00 0.00 4.00 0.00 0.00 0.00 0.00 0.00 0.00 96.00
00:08:28 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
00:08:28 2 0.00 0.00 4.95 0.00 0.00 0.00 0.00 0.00 0.00 95.05
00:08:28 3 2.00 0.00 6.00 0.00 0.00 0.00 0.00 0.00 0.00 92.00
00:08:28 4 0.00 0.00 4.95 0.00 0.00 0.00 0.00 0.00 0.00 95.05
00:08:28 5 1.98 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 98.02
00:08:28 6 0.00 0.00 6.12 0.00 0.00 0.00 0.00 0.00 0.00 93.88
00:08:28 7 0.00 0.00 6.12 0.00 0.00 0.00 0.00 0.00 0.00 93.88
00:08:28 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
00:08:29 all 0.50 0.00 3.01 0.00 0.00 0.00 0.00 0.00 0.00 96.49
00:08:29 0 0.00 0.00 5.00 0.00 0.00 0.00 0.00 0.00 0.00 95.00
00:08:29 1 2.02 0.00 1.01 0.00 0.00 0.00 0.00 0.00 0.00 96.97
00:08:29 2 2.00 0.00 9.00 0.00 0.00 0.00 0.00 0.00 0.00 89.00
00:08:29 3 0.00 0.00 3.00 0.00 0.00 0.00 0.00 0.00 0.00 97.00
00:08:29 4 0.00 0.00 3.06 0.00 0.00 0.00 0.00 0.00 0.00 96.94
00:08:29 5 0.00 0.00 1.01 0.00 0.00 0.00 0.00 0.00 0.00 98.99
00:08:29 6 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
00:08:29 7 0.00 0.00 1.96 0.00 0.00 0.00 0.00 0.00 0.00 98.04
- cpu별 사용량을 확인
- 특정 cpu 만 일하는지, 여러 cpu가 분산되어 일하는지 확인
pidstat 1
1
2
3
4
5
6
7
8
9
dotori17@PS-PERSNAL:~$ pidstat 1
Linux 4.4.0-19041-Microsoft (PS-PERSNAL) 08/31/21 _x86_64_ (8 CPU)
00:11:03 UID PID %usr %system %guest %wait %CPU CPU Command
00:11:04 UID PID %usr %system %guest %wait %CPU CPU Command
00:11:05 1000 234 0.00 1.00 0.00 0.00 1.00 0 node
00:11:05 1000 30196 0.00 2.00 0.00 0.00 2.00 0 sshd
00:11:05 1000 3877 0.00 1.00 0.00 0.00 1.00 0 sh
- process별 cpu 사용량 확인
- %CPU 값이 중요 : 코어별 누적
iostat -xz 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
dotori17@PS-PERSNAL:~$ iostat -xz 1
Linux 4.4.0-19041-Microsoft (PS-PERSNAL) 08/31/21 _x86_64_ (8 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
2.32 0.00 3.51 0.00 0.00 94.17
Device r/s rkB/s rrqm/s %rrqm r_await rareq-sz w/s wkB/s wrqm/s %wrqm w_await wareq-sz d/s dkB/s drqm/s %drqm d_await dareq-sz aqu-sz %util
avg-cpu: %user %nice %system %iowait %steal %idle
2.75 0.00 2.38 0.00 0.00 94.87
Device r/s rkB/s rrqm/s %rrqm r_await rareq-sz w/s wkB/s wrqm/s %wrqm w_await wareq-sz d/s dkB/s drqm/s %drqm d_await dareq-sz aqu-sz %util
avg-cpu: %user %nice %system %iowait %steal %idle
1.25 0.00 2.75 0.00 0.00 96.00
Device r/s rkB/s rrqm/s %rrqm r_await rareq-sz w/s wkB/s wrqm/s %wrqm w_await wareq-sz d/s dkB/s drqm/s %drqm d_await dareq-sz aqu-sz %util
- I/O 상황을 확인, r (read), w (write) 를 뜻함.
- await : 읽기나 쓰기를 하기 위해 대기하는 시간의 평균값으로 이 값이 높으면 정상적인 읽기나 쓰기 작업을 할수 없다고 볼수 있음.
- avgqu-sz : 해당 디바이스의 평균 요청 갯수
- %util : 디바이스 사용 비율 만약 이 값이 __60%__가 넘어가면 I/O 성능이 매우 안좋다고 본다. 단, I/O 비동기 처리 기술들이 많이 나왔기 때문에 꼭 높다고 애플리케이션 성능이 안좋다고 생각하면 안된다.
free -m
1
2
3
4
5
6
7
8
9
dotori17@PS-PERSNAL:~$ free -m
total used free shared buff/cache available
Mem: 24444 9489 14730 17 223 14823
Swap: 12799 13 12786
dotori17@PS-PERSNAL:~$ free -h
total used free shared buff/cache available
Mem: 23Gi 9.3Gi 14Gi 17Mi 223Mi 14Gi
Swap: 12Gi 13Mi 12Gi
- memory 사용량 확인
sar -n DEV 1
1
2
3
4
5
6
7
8
9
10
11
dotori17@PS-PERSNAL:~$ sar -n DEV 1
Linux 4.4.0-19041-Microsoft (PS-PERSNAL) 08/31/21 _x86_64_ (8 CPU)
00:20:30 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
00:20:31 eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
00:20:31 eth1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
00:20:31 eth2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
00:20:31 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
00:20:31 wifi0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
00:20:31 wifi1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
00:20:31 wifi2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
- 여러 서버의 정보들을 취합하는데 사용.
- -n 옵션을 사용하여 네트워크 상태 확인
- DEV : 모든 네트워크 디바이스의 상태
- rxkB/s : 초당 받은 kb 사이즈
- txkB/s : 초당 보낸 kb 사이즈
sar -n TCP,ETCP 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
dotori17@PS-PERSNAL:~$ sar -n TCP,ETCP 1
Linux 4.4.0-19041-Microsoft (PS-PERSNAL) 08/31/21 _x86_64_ (8 CPU)
00:23:19 active/s passive/s iseg/s oseg/s
00:23:20 0.00 0.00 0.00 0.00
00:23:19 atmptf/s estres/s retrans/s isegerr/s orsts/s
00:23:20 0.00 0.00 0.00 0.00 0.00
00:23:20 active/s passive/s iseg/s oseg/s
00:23:21 0.00 0.00 0.00 0.00
00:23:20 atmptf/s estres/s retrans/s isegerr/s orsts/s
00:23:21 0.00 0.00 0.00 0.00 0.00
00:23:21 active/s passive/s iseg/s oseg/s
00:23:22 0.00 0.00 0.00 0.00
00:23:21 atmptf/s estres/s retrans/s isegerr/s orsts/s
00:23:22 0.00 0.00 0.00 0.00 0.00
- TCP : tcp 를 통한 네트워크 처리 현황 확인
- ETCP : TCP 처리 시에 발생한 에러들의 갯수 확인
- 항목들 설명
- active/s : 장비에서 외부로 초기화된 초당 tcp 연결 갯수 이 값이 많으면 해당 서버에 새롭게 접근한 클라이언트 수가 많다는 의미 java socket 통신 시 connect() 메소드에 해당
- passive/s : 외부에서 장비로 초기화된 초당 TCP 연결 갯수 java socket 통신 시 accept() 메소드에 해당
- retrans/s : 초당 재전송된 세크먼트 총 갯수 보통은 재전송이 발생하지 않으므로 0보다 클 경우 네트워크나 서버에 문제가 발생했을 가능성이 있음.
top
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
dotori17@PS-PERSNAL:~$ top
top - 00:28:21 up 9:45, 0 users, load average: 0.52, 0.58, 0.59
Tasks: 20 total, 1 running, 19 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 2.4 sy, 0.0 ni, 97.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 24444.2 total, 14829.1 free, 9391.1 used, 224.0 buff/cache
MiB Swap: 12800.0 total, 12786.5 free, 13.5 used. 14922.5 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 8940 320 272 S 0.0 0.0 0:00.04 init
92 root 20 0 20224 1100 1000 S 0.0 0.0 0:00.00 sshd
95 root 20 0 21828 5120 4960 S 0.0 0.0 0:00.05 sshd
154 dotori17 20 0 21828 2104 1972 S 0.0 0.0 0:00.45 sshd
155 dotori17 20 0 18224 3832 3716 S 0.0 0.0 0:00.24 bash
183 root 20 0 8940 228 184 S 0.0 0.0 0:00.00 init
184 dotori17 20 0 10656 680 648 S 0.0 0.0 0:00.00 sh
185 dotori17 20 0 10656 748 712 S 0.0 0.0 0:00.00 sh
191 dotori17 20 0 10656 716 680 S 0.0 0.0 0:00.01 sh
193 dotori17 20 0 932404 53088 22388 S 0.0 0.2 0:11.79 node
204 dotori17 20 0 621264 23640 14460 S 0.0 0.1 0:00.23 node
234 dotori17 20 0 1006076 128496 119872 S 0.0 0.5 5:51.25 node
241 dotori17 20 0 898380 35464 14720 S 0.0 0.1 0:27.78 node
9784 dotori17 20 0 690412 116872 16372 S 0.0 0.5 0:02.10 node
16475 dotori17 20 0 664036 76156 14552 S 0.0 0.3 0:07.80 node
27153 dotori17 20 0 725992 178652 11132 S 0.0 0.7 0:38.52 bundle
30135 root 20 0 21828 5120 4964 S 0.0 0.0 0:00.07 sshd
30196 dotori17 20 0 21828 2100 1980 S 0.0 0.0 0:00.13 sshd
30197 dotori17 20 0 18092 3628 3544 S 0.0 0.0 0:00.04 bash
5402 dotori17 20 0 18932 2104 1460 R 0.0 0.0 0:00.01 top
- 시스템 전반적인 현황 실시간 파악 용도
- cpu를 많이 사용하므로 부하가 심한 단점이 있기때문에 조심해서 사용
[참고도서] : 자바 트러블슈팅 (이상민 저) - jpub