서버 성능 분석

8333 단어

1.top 명령(최고의 성능 분석 도구)

top - 10:38:50 up 220 days, 11:36,  2 users,  load average: 0.23, 0.28, 1.22
Tasks: 755 total,   4 running, 751 sleeping,   0 stopped,   0 zombie
Cpu(s):  6.7%us,  4.5%sy,  0.0%ni, 87.0%id,  0.0%wa,  0.0%hi,  1.8%si,  0.0%st
Mem:  65956496k total, 56346988k used,  9609508k free,    47104k buffers
Swap: 12582904k total,  7947060k used,  4635844k free,   842860k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                               
2608 redis     20   0 6176m 4.4g  848 S  9.9  7.0  49990:48 codis-server                                                                                                                    
14551 admin     20   0 38.7g 1.0g 2824 S  9.9  1.6  29398:48 java                                                                                                                                                                                                                             
16471 www       20   0  144m  45m  932 S  2.6  0.1   8475:36 nginx                                                                                                                           
16473 www       20   0  137m  41m  932 S  2.3  0.1   8493:40 nginx                                                                                                                           
16474 www       20   0  145m  52m  932 S  2.3  0.1   8586:39 nginx

top 명령을 통해 볼 수 있습니다
  • 시간 정보: 현재 시간 10:38:50;시스템 운행 시간 up220days, 11:36;
  • 사용자 정보: 현재 로그인 사용자 수 2user;
  • 시스템 부하(1min, 5min, 15min에서 현재의 평균치)loadaverage: 0.23, 0.28, 1.22(값이 적을수록 처리가 빠르고 좋다는 뜻).
  • 프로세스 정보(총 프로세스 수, 실행 중인 프로세스 수, 수면 프로세스 수, 정지 프로세스 수, 좀비 프로세스 수)Tasks:755total, 4running, 751sleeping, 0stopped, 0zombie;
  • CPU 정보(사용자 공간 비례, 시스템 공간 비례, 사용자 프로세스 공간에서 우선순위가 바뀐 프로세스는 CPU 백분율, 빈 CPU 비례, 입력과 출력을 기다리는 CPU 비례, 소프트 인터럽트 비례, 하드 인터럽트 비례, 잠재적 공간 비례) Cpu(s): 6.7%us, 4.5%sy, 0.0%ni, 87.0%id, 0.0%wa, 0.0%hi, 1.8%si, 0.0%st;
  • Memory 정보(물리적 메모리 총량, 사용된 물리적 메모리, 비어 있는 메모리, 커널 캐시로 사용되는 메모리)Mem: 65956496k total, 56346988k used, 9609508kfree, 47104k buffers;
  • 교환구역 정보(교환구역 총량, 사용량, 유휴량, 캐시의 교환구역량)Swap: 12582904ktotal, 7947060kused, 4635844kfree, 842860kcached;
  • 프로세스 목록 정보(프로세스 id, 프로세스 소유자의 사용자 이름, 우선순위,nice 값 [음수 값은 높은 우선순위, 양수 값은 낮은 우선순위], 프로세스의 가상 메모리 총량 [VIRT=SWAP+RES]kb, 프로세스는 바뀌지 않은 물리적 메모리 크기 [RES=CODE+DATA]kb, 공유 메모리 크기 kb, 프로세스 상태 [D=중단할 수 없는 수면 상태, R=실행, S=수면, T=추적/정지, Z=좀비 프로세스], 마지막으로 업데이트된 CPU 비율, 프로세스에 사용된 물리적 메모리 비율, 프로세스에 사용된 CPU 시간 총 0.01s, 명령) PID USER PR NI VIRT RES SHR S%CPU%MEM TIME+COMMAND
  • 2.uptime 및 w 명령(로드 쿼리)

  • uptime 명령
      10:46:12 up 220 days, 11:44,  2 users,  load average: 0.36, 0.28, 0.85
    
  • uptime 명령을 통해 top 첫 줄과 같은 부하 정보를 얻을 수 있습니다(10:46:12 up220days, 11:44, 2users,loadaverage: 0.36, 0.28, 0.85)
  • w 명령
      10:46:43 up 220 days, 11:44,  2 users,  load average: 0.26, 0.26, 0.82
      USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
      root     pts/0     Thu19    1:28m  0.04s  0.04s -bash
      admin    pts/1     10:37    0.00s  0.03s  0.01s w
    
  • w 명령을 통해 우리는 top 첫 줄과 같은 부하 정보(10:46:43 up 220 days, 11:44, 2 users,loadaverage: 0.26, 0.26, 0.82)를 얻을 수 있습니다.또한 각 사용자의 로그인 이름(USER), 터미널(TTY, pts는 가상 터미널), 로그인 기기의 IP(FROM), 로그인 시간(LOGIN@), 유휴 시간(IDLE), JCPU(사용자가 터미널의 모든 프로세스를 실행하는 시간), PCPU(현재 이 프로세스가 사용하는 시간), 현재 실행 중인 명령(WHAT)

    3.free 및 vmstat 명령(메모리 조회)

  • free 명령
                    total        used        free      shared  buff/cache   available
      Mem:          64410       53463        9537          13        1409       10603
      Swap:         12287        7760        4527
    
  • free 명령을 통해 우리는 물리적 메모리의 크기, 캐시의 크기, 교환 구역의 크기 (총량, 사용량, 유휴량, 공유량, 내부 캐시, 캐시의 상호작용 구역) 를 얻을 수 있습니다.top의Mem과 비교:free 명령은 물리적 메모리의 크기뿐만 아니라 캐시 구역, 교환 구역의 크기도 얻을 수 있음을 알 수 있다.주의:Mem의 used가 total에 접근할 때 메모리가 거의 다 떨어졌다고 말하지 마세요.캐시의 크기를 다시 봅시다. 캐시도 물리적 메모리로 사용할 수 있기 때문입니다.free [-b/-k/-m/-g]에 표시되는 물리적 메모리는 각각bytes/KB/MB/GB 단위로 표시됩니다.free 명령은 매개 변수가 없습니다. 기본값은free – k 명령과 일치합니다.
  • vmstat 명령
      procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
       r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
       3  0 7946948 9894296  29632 1293112    2    0    12    76    0    0 23 17 60  0  0
    
  • vmstat 명령을 통해 실행 대기 작업 수 (r), IO 대기 프로세스 수 (b), 사용 중인 가상 메모리 (swpd), 빈 메모리 (free), 블록 장치 읽기 캐시 (buff), 파일 시스템 캐시 (cache), 교환 구역에서 쓰기 메모리 크기 (si)kb/s, 메모리에서 교환 구역으로 쓰기 (so), 디스크 블록 수 (bi) 를 얻을 수 있습니다.초당 디스크 블록 수 (bo), 초당 인터럽트 수 (in), 상하문 전환 수 (cs), 사용자 프로세스 소모 cpu 시간 (us), 시스템 소모 cpu 시간 (sy), 유휴 시간 (id), 대기 io 시간 (wa), 잠행 시간 (st)

    4.netstat 명령(네트워크 쿼리)

  • netstat
      Active Internet connections (w/o servers)
      Proto Recv-Q Send-Q Local Address               Foreign Address             State      
      tcp        0      0 4*.**2.**1.1*2:http           1*1.1**.1*4.*6:*7*8          SYN_RECV   
    

  • netstat 명령을 통해 Active Internet connections (원본 TCP 연결), 그리고 네트워크의 프로토콜, 수신 대기열, 발송 대기열 (일반적으로 수신 대기열과 발송 대기열은 0이며, 그렇지 않으면 패키지가 대기열에 쌓이고 있음), 로컬 주소, 외부 주소, 프로토콜의 상태를 얻을 수 있습니다.네트워크 정보는 구체적으로 네트워크 연결, 루트 테이블, 인터페이스 상태,masquerade 연결, 멀티캐스트 구성원 등이 있다.또한 Active UNIX domain sockets(원본 Unix 인터페이스가 있는데 네트워크 플러그인과 같지만 본체 통신에만 사용할 수 있고 성능이 배로 향상될 수 있음)와 네트워크 프로토콜, 본 인터페이스에 연결된 프로세스 번호, 표지, 플러그인 인터페이스 유형, 플러그인 현재 상태, i 결점, 플러그인에 연결된 다른 프로세스가 사용하는 경로 이름도 있다.
    netstat의 관련 매개 변수 설명: - a(위의 두 종류를 볼 수 있음). -t(tcp 관련 옵션만 표시)-u(udp 관련 옵션만 표시) 두 서버에 이 내용이 없습니다. 지난 QQ는 있을 것입니다. -l(Listen에서 수신한 서비스 상태만 표시)-r(라우팅 정보만 표시)-p(링크를 만든 프로그램 이름만 표시)-s(각 프로토콜에 따라 통계) -e(확장 정보 표시)

    5.df-h 명령(디스크 소모)

    Filesystem            Size  Used Avail Use% Mounted on
    /dev/sda2              97G  2.0G   90G   3% /
    /dev/sda5             1.7T   35G  1.6T   3% /data
    /dev/sda1              99M   12M   83M  12% /boot
    tmpfs                 8.0G     0  8.0G   0% /dev/shm
    

    df-h 명령을 통해 우리는 파일 시스템의 종류, 크기, 사용량, 유휴량, 사용률, 마운트 포인트 등 정보를 얻을 수 있다.tmpfs는 메모리 기반의 파일 시스템이다.

    6.iostat 명령(디스크 입출력 상태)


    iostat은 I/O statistics(입력/출력 통계)의 줄임말로 iostat 도구는 시스템의 디스크 작업 활동을 감시합니다.디스크 활동 통계를 보고하고 CPU 사용도 보고하는 것이 특징이다.1. 명령 형식: iostat [매개 변수] [시간] [횟수] 2. 명령 기능: iostat을 통해 CPU, 네트워크 카드, tty 장치, 디스크, CD-ROM 등 장치의 활동 상황, 부하 정보를 쉽게 볼 수 있습니다.3. 명령 매개 변수: -C CPU 사용 현황 표시 -d 디스크 사용 상황 표시 -k KB 단위 표시 -m 단위 표시 -N 표시 -N 표시 디스크 진열(LVM) 정보 -n 표시 NFS 사용 상황 표시 -p[디스크] 표시 디스크 및 파티션 표시 -t 표시 단말기 및 CPU 정보 -x 표시 상세 정보 -V 표시 버전 정보
    Linux 2.6.32-279.el6.x86_64 (zk2.******.com)    09/08/2017      _x86_64_        (24 CPU)
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          22.92    0.00   17.45    0.06    0.00   59.57
    Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
    sda               7.17   436.16   14.06   14.21   553.40  3602.94   147.04     0.17    6.18   0.99   2.79
    

    설명:
  • cpu 속성 값 설명:%user:CPU가 사용자 모드에 있는 시간 백분율.nice: CPU가 NICE 값을 가진 사용자 모드에 있는 시간의 비율입니다.시스템: CPU가 시스템 모드에 있는 시간의 백분율입니다.iowait: 입력 출력 완료 시간의 백분율을 기다리는 CPUsteal: 관리자가 다른 가상 프로세서를 유지할 때 가상 CPU의 무의식적인 대기 시간 백분율.idle: CPU 유휴 시간 백분율.참고:% iowait의 값이 너무 높으면 하드디스크에 I/O 병목이 있음을 나타냅니다.% idle 값이 높으면 CPU가 비어 있음을 나타냅니다.% idle 값이 높지만 시스템 응답이 느릴 경우 CPU가 메모리 할당을 기다리는 것일 수 있습니다. 이때 메모리 용량을 늘려야 합니다.%idle 값이 10보다 낮으면 시스템의 CPU 처리 능력이 상대적으로 낮아 시스템에서 가장 해결해야 할 자원이 CPU임을 나타낸다.
  • disk 속성 값 설명: rrqm/s: 매초merge의 읽기 조작 수량.즉rmerge/swrqm/s: 매초merge의 쓰기 작업 수량입니다.즉, wmerge/sr/s: 초당 완료된 읽기 I/O 장치 횟수입니다.즉, rio/s w/s: 초당 완료된 쓰기 입출력 장치 횟수입니다.즉, wio/srsec/s: 초당 섹터 읽기 수입니다.즉rsect/s wsec/s: 초당 쓰기 섹터 수입니다.즉, wsect/s rkB/s: 1초에 K 바이트를 읽습니다.섹션 크기가 512바이트이기 때문에rsect/s의 절반입니다.wkB/s: 1초에 K 바이트를 씁니다.wsect/s의 절반입니다.avgrq-sz: 장치당 입출력 작업의 평균 데이터 크기 (섹터)avgqu-sz: 평균 입출력 대기열 길이.await: 평균 장치 입출력 작업 대기 시간(ms).svctm: 장치 입출력 작업당 평균 서비스 시간(밀리초)%util: 1초 동안 I/O 작업에 얼마나 많은 시간을 사용합니까? 즉, io에 소모된 cpu 백분율 비고:%util이 100%에 가깝다면, I/O 요청이 너무 많고, I/O 시스템이 부하가 가득 차서 이 디스크에 병목이 존재할 수 있습니다.만약svctm가 await에 가깝다면 I/O는 대기 시간이 거의 없다는 것을 의미한다.만약await가svctm보다 훨씬 크다면 I/O 대기열이 너무 길고 io 응답이 너무 느리다는 것을 설명합니다. 필요한 최적화가 필요합니다.만약 avgqu-sz가 비교적 크다면, 당량io가 기다리고 있다는 것을 나타낸다.
  • 좋은 웹페이지 즐겨찾기