Linux 서버의 성능 평가
12384 단어 Linux 고급
하나, 전체 컴퓨터: top
둘째, CPU: vmstat
3. 메모리:free
넷째, 하드디스크: df 보기 디스크 남은 공간
5. 디스크 IO: iostat
6. 네트워크 IO: ifstat
하나, 전체 컴퓨터: top
[root@node01 ~]#
[root@node01 ~]# top
top - 01:47:15 up 1 day, 18:04, 3 users, load average: 0.27, 0.11, 0.03
Tasks: 78 total, 2 running, 75 sleeping, 1 stopped, 0 zombie
Cpu(s): 25.3%us, 11.5%sy, 0.0%ni, 62.8%id, 0.0%wa, 0.0%hi, 0.3%si, 0.0%st
Mem: 1004412k total, 569680k used, 434732k free, 33500k buffers
Swap: 2097144k total, 0k used, 2097144k free, 399752k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2077 root 20 0 1034m 31m 10m S 22.3 3.2 0:28.88 java
1963 root 20 0 99.7m 6484 3748 S 14.3 0.6 0:18.53 sshd
7 root 20 0 0 0 0 R 0.3 0.0 0:44.56 events/0
1 root 20 0 19232 1516 1236 S 0.0 0.2 0:00.86 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
4 root 20 0 0 0 0 S 0.0 0.0 0:00.03 ksoftirqd/0
5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
6 root RT 0 0 0 0 S 0.0 0.0 0:00.14 watchdog/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cgroup
9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khelper
10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 netns
11 root 20 0 0 0 0 S 0.0 0.0 0:00.00 async/mgr
주로%CPU,%MEM loadaverage 보기(시스템 평가 부하 값): 1분 5분 15분 평균 부하 값(3개 값 더하기/3 * 60% 이상 100% 부하 중량 표시) 요약: uptime
[root@node01 ~]# uptime
01:57:36 up 1 day, 18:15, 3 users, load average: 0.20, 0.18, 0.10
둘째, CPU: vmstat
[root@node01 ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 434020 33796 399764 0 0 1 3 15 32 0 0 100 0 0
[root@node01 ~]# vmstat -n 2 5
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 434036 33804 399784 0 0 1 3 15 32 0 0 100 0 0
1 0 0 433988 33804 399784 0 0 0 0 1080 3843 26 14 60 0 0
1 0 0 433988 33804 399784 0 0 0 0 1075 3225 20 9 70 0 0
0 0 0 433988 33812 399780 0 0 0 16 1082 3842 25 16 59 0 0
2 0 0 433988 33812 399784 0 0 0 0 1080 3514 23 12 65 0 0
일반적인 vmstat 도구의 사용은 두 개의 매개 변수를 통해 이루어집니다.
procs r: CPU 타임 슬라이드를 실행하고 기다리는 프로세스 트리입니다. 원칙적으로 1핵의 CPU 운행 대기열은 2를 초과하지 마십시오. 전체 시스템의 운행 대기열은 전체 핵 수의 2배를 초과해서는 안 됩니다. 그렇지 않으면 시스템의 압력이 너무 크다는 것을 의미합니다.b: 디스크 I/O, 네트워크 I/O 등 cpu us: 사용자 프로세스가 CPU를 소모하는 시간 백분율, us값이 높고 사용자 프로세스가 CPU를 소모하는 시간이 많으며 장기적으로 50%보다 크면 최적화 프로그램입니다.sy: 코어 프로세스가 소모하는 CPU 시간 백분율 id: 비어 있는 CPU 백분율 wa: 시스템이 IO를 기다리는 CPU 시간 백분율 st: 한 가상 컴퓨터에서 훔친 CPU 시간의 백분율 us+sy 참고값이 80%라면 CPU 부족이 존재할 수 있음
추가 명령: 모든 CPU 핵 정보 보기(2초당): mpstat -P ALL 2
[root@tesm-jenkins-16-32 ~]# mpstat -P ALL 2
Linux 3.10.0-693.21.1.el7.x86_64 (tesm-jenkins-16-32) 06/13/2019 _x86_64_ (8 CPU)
03:21:27 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
03:21:29 PM all 0.06 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.94
03:21:29 PM 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
03:21:29 PM 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
03:21:29 PM 2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
03:21:29 PM 3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
03:21:29 PM 4 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
03:21:29 PM 5 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
03:21:29 PM 6 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
03:21:29 PM 7 0.50 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.50
03:21:29 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
03:21:31 PM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
03:21:31 PM 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
03:21:31 PM 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
03:21:31 PM 2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
03:21:31 PM 3 0.50 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.50
03:21:31 PM 4 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
03:21:31 PM 5 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
03:21:31 PM 6 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
03:21:31 PM 7 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
프로세스당 CPU 핵 정보 사용(1초당): pidstat-u1 -p 프로세스 번호
[root@tesm-jenkins-16-32 ~]# ps -ef | grep java
jenkins 1214 1 0 May05 ? 01:04:00 /etc/alternatives/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -DJENKINS_HOME=/opt/jenkins -jar /opt/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --daemon --httpPort=8080 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20
root 3250 2304 0 15:22 pts/0 00:00:00 grep --color=auto java
[root@tesm-jenkins-16-32 ~]# pidstat -u 1 -p 1214
Linux 3.10.0-693.21.1.el7.x86_64 (tesm-jenkins-16-32) 06/13/2019 _x86_64_ (8 CPU)
03:22:52 PM UID PID %usr %system %guest %CPU CPU Command
03:22:53 PM 997 1214 0.00 0.00 0.00 0.00 0 java
03:22:54 PM 997 1214 0.00 0.00 0.00 0.00 0 java
03:22:55 PM 997 1214 0.00 1.00 0.00 1.00 0 java
03:22:56 PM 997 1214 0.00 0.00 0.00 0.00 0 java
03:22:57 PM 997 1214 0.00 0.00 0.00 0.00 0 java
03:22:58 PM 997 1214 0.00 0.00 0.00 0.00 0 java
3. 메모리:free
free -m
[root@node02 ~]# free -m
total used free shared buffers cached
Mem: 980 660 320 0 82 99
-/+ buffers/cache: 479 501
Swap: 2047 1 2046
usage: free [-b|-k|-m|-g] [-l] [-o] [-t] [-s delay] [-c count] [-V] -b,-k,-m,-g show output in bytes, KB, MB, or GB -l show detailed low and high memory statistics -o use old format (no -/+buffers/cache line) -t display total for RAM + swap -s update every [delay] seconds -c update [count] times -V display version information and exit
- 경험치:
프로세스당 메모리 정보 사용(1초당):pidstat-r1-p 프로세스 번호
[root@tesm-jenkins-16-32 ~]# pidstat -r 1 -p 1214
Linux 3.10.0-693.21.1.el7.x86_64 (tesm-jenkins-16-32) 06/13/2019 _x86_64_ (8 CPU)
03:29:53 PM UID PID minflt/s majflt/s VSZ RSS %MEM Command
03:29:54 PM 997 1214 0.00 0.00 8033372 1636384 20.02 java
03:29:55 PM 997 1214 0.00 0.00 8033372 1636384 20.02 java
03:29:56 PM 997 1214 0.00 0.00 8033372 1636384 20.02 java
03:29:57 PM 997 1214 0.00 0.00 8033372 1636384 20.02 java
넷째, 하드디스크: df 보기 디스크 남은 공간
df -h (diskfree -human)
[root@node02 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 97G 2.1G 90G 3% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 194M 28M 157M 15% /boot
5. 디스크 IO: iostat
설치:yum install -y sysstat
iostat -xdk 2 3
[root@tesm-jenkins-16-32 ~]# iostat -xdk 2 3
Linux 3.10.0-693.21.1.el7.x86_64 (tesm-jenkins-16-32) 06/13/2019 _x86_64_ (8 CPU)
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.02 0.05 0.32 1.03 9.55 57.10 0.00 7.22 5.69 7.48 0.54 0.02
dm-0 0.00 0.00 0.05 0.33 1.01 9.54 54.79 0.00 9.12 5.58 9.67 0.48 0.02
dm-1 0.00 0.00 0.00 0.00 0.00 0.01 8.39 0.00 51.80 178.42 13.19 5.43 0.00
dm-2 0.00 0.00 0.00 0.00 0.02 0.00 19.97 0.00 1.22 1.77 0.15 1.20 0.00
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.00 0.50 0.00 4.00 0.00 16.00 0.01 24.00 24.00 0.00 24.00 1.20
dm-0 0.00 0.00 0.50 0.00 4.00 0.00 16.00 0.01 24.00 24.00 0.00 24.00 1.20
dm-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
dm-2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.00 0.00 1.00 0.00 4.00 8.00 0.00 0.00 0.00 0.00 0.00 0.00
dm-0 0.00 0.00 0.00 1.00 0.00 4.00 8.00 0.00 0.00 0.00 0.00 0.00 0.00
dm-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
dm-2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
디스크 블록 장치 배포:
rkB/s, wkB/s는 시스템 응용에 따라 값이 다르지만 규칙적으로 따른다. 장기적이고 초대형 데이터 읽기와 쓰기는 정상적이지 않기 때문에 프로그램 읽기를 최적화해야 한다.svctm, await의 값은 매우 가깝다. 표지 거호는 I/O 대기가 없고 디스크의 성능이 좋다. 만약에 await의 값이svctm의 값보다 훨씬 높으면 I/O 대기열이 너무 길기 때문에 최적화 프로그램이나 디스크를 교체해야 한다.0
프로세스당 디스크 정보 사용(1초당): pidstat-d1-p 프로세스 번호
[root@tesm-jenkins-16-32 ~]# pidstat -d 1 -p 1214
Linux 3.10.0-693.21.1.el7.x86_64 (tesm-jenkins-16-32) 06/13/2019 _x86_64_ (8 CPU)
04:41:17 PM UID PID kB_rd/s kB_wr/s kB_ccwr/s Command
04:41:18 PM 997 1214 0.00 0.00 0.00 java
04:41:19 PM 997 1214 0.00 8.00 0.00 java
04:41:20 PM 997 1214 0.00 0.00 0.00 java
04:41:21 PM 997 1214 0.00 0.00 0.00 java
04:41:22 PM 997 1214 0.00 0.00 0.00 java
6. 네트워크 IO: ifstat
1. 원본 ifstatfind/-name ifstat을 마운트 해제하여/usr/sbin/ifstat,ifstat의 man 디렉터리를 제거합니다.gz 파일 삭제 2, 다운로드 설치 wgethttp://gael.roualland.free.fr/ifstat/ifstat-1.1.tar.gz tar xzvf ifstat-1.1.tar.gz cd ifstat-1.1 ./configure make make install cp ifstat/usr/sbin/각 네트워크 카드의 in,out, 네트워크 부하 상황을 관찰하고 프로그램 네트워크 읽기와 쓰기가 정상인지 – 프로그램 네트워크 I/O 최적화 – 네트워크 I/O 광대역 증가