>php教程 >PHP开发 >Linux에서 성능 이상 징후 발견 및 성능 모니터링

Linux에서 성능 이상 징후 발견 및 성능 모니터링

高洛峰
高洛峰원래의
2016-11-08 10:25:361625검색

소개: 대부분의 서비스는 Linux에서 실행됩니다. 이제 Linux가 널리 사용되지만 여전히 성능 모니터링 지표에 대해 논의해 보겠습니다. 성능 모니터링은 I/O, 메모리, CPU, TCP에서 시작됩니다. 연결 번호, 네트워크, 프로세스 또는 스레드. 사용되는 명령은 iostat, vmstat, sar, mpstat, netstat, ss, iftop, free, pstree/ps, pidstat, top, (uptime) 더 자세히 살펴보겠습니다. 1. 디스크 I/O(iostat)

우리 머신에는 디스크에 저장된 많은 데이터가 있습니다. 우리는 디스크와 상호 작용해야 하는 많은 데이터를 읽습니다. 저속 장치이며 종종 차단되므로 디스크 I/O 모니터링이 매우 중요합니다. 우리는 iostat를 사용하여 디스크 상태를 진단합니다. 사용된 머신은 Tencent Cloud 호스트입니다.

Linux에서 성능 이상 징후 발견 및 성능 모니터링ps: 초당 I/O 요청 수를 나타내는 장치의 초당 전송 수

Blk_read/s: 장치에서 읽기 per second 수신된 데이터 량

Blk_wrtn/s: 초당 장치에 쓴 데이터 량


Blk_read: 읽은 전체 데이터 량


Blk_wrtn : 작성된 데이터의 총량

%user : 사용자 모드 프로세스에서 사용하는 CPU 부하

%nice : 우선 순위 프로세스에서 사용하는 CPU 부하

% system: 커널 상태 프로세스에서 사용하는 CPU 로드를 나타냅니다.

%iowait: CPU가 I/O를 기다리고 있을 때의 CPU 로드를 나타냅니다.

%steal: 도난당한 CPU 로드를 나타냅니다. 가상화에 사용됨

%idle은 기술에 사용됨: 유휴 CPU 로드를 나타냄

iostat에는 확장 정보를 나타내는 일반적으로 사용되는 매개 변수 옵션 -x도 있습니다.

Linux에서 성능 이상 징후 발견 및 성능 모니터링rrqm/s: 이 장치와 관련된 읽기 요청 수(다중 I/O 병합 작업)가 초당 병합됩니다.


wrqm/s: 관련 쓰기 요청 수

r/s: 초당 장치에 전송된 읽기 요청 수

w/s: 초당 장치에 전송된 쓰기 수 요청


rsec/s: 초당 읽은 장치 섹터 수

wsec/s: 초당 쓴 장치 섹터 수

avgrq -sz: 평균 요청 섹터 크기

avgqu-sz: 평균 요청 큐 길이

await: 각 I/O 요청의 평균 처리 시간(대기 시간)

r_await: 평균 처리 각 읽기 I/O 요청 시간

w_await: 각 쓰기 I/O 요청의 평균 처리 시간

svctm: 시간/O 작업 서비스 시간당 평균 I/O 요청을 나타냅니다. svctm 값과 wait 값이 매우 가까우면 I/O 대기가 거의 없다는 의미입니다. wait 값이 svctm 값보다 훨씬 높다면 I/O 대기열 대기가 너무 크다는 의미입니다. long

%util: 통계에서 I/O 작업을 처리하는 데 소요된 총 시간, 즉 CPU 소비 비율입니다. 예를 들어 통계 시간 간격이 1초이면 장치는 0.65초 동안 I/O를 처리하고 0.35초 동안 유휴 상태입니다. 그러면 이 장치의 %util=0.65/1=65%가 일반적으로 이 매개변수가 100%이면 장치가 전체 용량에 가깝게 실행되고 있음을 의미합니다(물론 %util이 여러 개 있는 경우에도 마찬가지입니다). 100%, 디스크의 동시성 성능으로 인해 디스크 사용량이 반드시 병목 현상에 도달하지는 않을 수 있음)


2. 메모리(무료)

에서 Linux 시스템에서는 메모리 사용량을 확인합니다. free 명령을 사용하여

Linux에서 성능 이상 징후 발견 및 성능 모니터링의 첫 번째 줄에 있는 정보를 봅니다(운영 체제 수준에서 생각할 수 있음)


total : 총 물리적 메모리 크기

used: 할당된 크기

free: 할당되지 않은 크기


shared: 공유된 크기 메모리, 주로 IPC 통신에 사용

buffer: 블록 장치 버퍼링에 사용

cached: 파일 내용 버퍼링, 즉 캐싱에 사용

"Cache"는 분할하는 것 프로세스와 하드 디스크 버퍼 사이에 있는 메모리 영역으로, 프로세스는 데이터를 읽어야 할 때 "비포장도로" 하드 대신 "고속도로" 캐시에서 직접 데이터를 읽습니다.


여기의 버퍼는 실제로 데이터의 메타데이터(디렉터리 이름, 파일 크기, 파일 저장 블록, 수정 시간, 권한 등)를 저장합니다. 캐시는 최근에 읽은 파일을 저장합니다.

세 번째 정보 줄(애플리케이션 수준에서 생각할 수 있음)

여기서 -/+ 버퍼/캐시는 각각 -buffers/cache 및 +buffers/cache입니다


-buffers/cache = 사용됨(첫 번째 줄)-buffers-cached는 실제로 현재 프로그램에서 "실제로 사용되는" "물리적 메모리"입니다.


+buffers/cache = 버퍼 +cached는 "버퍼"

used=(+buffers/cached)+(-buffers/cached)

로 시스템에 일시적으로 "대여"된 메모리 크기를 의미하므로 애플리케이션에서 프로그램 수준, 사용 가능한 메모리 = 여유 메모리+버퍼+캐시

자세한 정보는 다음과 같은 방법으로 확인할 수 있습니다.

~ cat /proc/meminfo

MemTotal:        1020128kB

MemFree:          670772kB

버퍼:           97780kB

캐시됨:           10 0980kB

SwapCached:            0 kB

활성:           164988kB

비활성:         117296kB

활성(anon):      83536 kB

비활성(anon):      160 kB

활성 (파일):      81452 kB

비활성(파일):   117136 kB

불가:           0 kB

밀폐됨:               0 kB

스왑 총계:             0 kB

스왑 프리:              0 kB

더티:                92 kB

쓰기 저장:             0 kB

AnonPages:        83504kB

매핑됨:            17500kB

Shmem:               172kB

슬래브:              46696kB

S재생 가능:      28652kB

S재생 취소:       18044kB

커널스택:        1744kB

페이지 테이블:         2636kB

NFS_Unstable:          0kB

바운스:                0 kB

WritebackTmp:         0kB

커밋 제한:      510064kB

Committed_AS:     343800kB

Vmalloc총합:   34359738367kB

Vmalloc사용:        7112kB

VmallocChunk:   34359 727304 kB

하드웨어 손상됨:     0 kB

AnonHugePages:     36864 kB

HugePages_Total:       0

HugePages_Free:        0

HugePages_Rsvd:        0

HugePages_Surp:        0

대형 페이지 크기:       2048kB

DirectMap4k:        8184kB

DirectMap2M:     1040384kB


   三,CPU(dstat,mp 통계)

   首先我们使用 dstat命令来查看下我们的CPU情况,他能够实时的输们的信息,

Linux에서 성능 이상 징후 발견 및 성능 모니터링

每2秒输출일次,一共输출10 다음

cpu:hiq、siq分别为硬中断和软中断次数

system:int、csw分别为系统的中断次数(인터럽트)와上文切换次数( 컨텍스트 스위치 ).

-c:表示只显示我们的CPU信息

-m:表示只显示我们的内存信息

- p:表示只显示我们的进程信息

-n:表示只显示我们的网络信息

我们想以什么为么优先顺序查看,可以在后face加下列参数

Linux에서 성능 이상 징후 발견 및 성능 모니터링

mpstat

Linux에서 성능 이상 징후 발견 및 성능 모니터링

%user      여기internal时间段里,用户态的CPU时间(%),不包含nice值为负进程  (usr/총)*100
%nice      internal时间段里,nice值为负进程的CPU时间(%)   (nice/total)*100
%sys       internal时间段里,内核时间(%)       (시스템/전체)*100
%iowait    internal时间段里,硬盘IO等待时间(%) (iowait/전체)*100
%irq       internal时间段里,硬中断时间( %)     (irq/전체)*100
%soft      internal时间段里,软中断时间(%)     (softirq/total)*100
%idle      internal时间段里,CPU除去等待磁盘IO操작 외부 因为任何원因而공간(%) (유휴/전체)*100

  4,TCP连接数(ss,netstat)

   ss是Socket 통계 그 종류의 이름은 sss命令就是에 사용되는 소켓입니다.显示更为详细的有关TCP连接信息。当我们的소켓连接数不常굉장한 时候, 无论是我们使用 netstat命令还是에서 内核中查看连接数cat /proc/net/tcp 时候道会很缓慢。

ss가 빠른 이유는 TCP 프로토콜에서 tcp_diag를 사용하기 때문입니다. tcp_diag는 Linux 커널에서 직접 정보를 얻을 수 있어 ss의 효율성을 보장합니다.

netstat과 ss를 비교할 수 있습니다.

Linux에서 성능 이상 징후 발견 및 성능 모니터링

Linux에서 성능 이상 징후 발견 및 성능 모니터링

netstat 명령은 당연합니다 ss 명령보다 훨씬 느립니다

netstat 명령

Linux에서 성능 이상 징후 발견 및 성능 모니터링

시스템의 데몬 프로세스의 연결 상태 정보를 볼 수 있고 모니터링되는 포트 번호

-t: TCP 연결을 의미

-u: UDP 연결을 의미

-n: 정보를 숫자 형태로 표시

- p: 수신 포트 번호 표시


시스템에서 데몬 프로세스의 수신 상태 보기

Linux에서 성능 이상 징후 발견 및 성능 모니터링

우리는 상태 상태를 볼 수 있습니다.


ss 명령 표시

현재 서버의 네트워크 연결 통계 보기: ss -s

Linux에서 성능 이상 징후 발견 및 성능 모니터링

다른 ss 사용법은 netstat 사용법과 동일합니다


5. 네트워크(iftop)

iftop -i 사용 eth0

Linux에서 성능 이상 징후 발견 및 성능 모니터링

Ctrl+c를 사용하여 종료하면 종료 표시는

Linux에서 성능 이상 징후 발견 및 성능 모니터링

-i를 사용할 수 있습니다. 다양한 네트워크 카드 트래픽 정보를 모니터링하기 위한 매개 변수입니다. iftop의 어떤 인터페이스에서 p를 눌러 포트 트래픽 정보를 볼 수 있습니다.

Linux에서 성능 이상 징후 발견 및 성능 모니터링

6. 프로세스 정보(ps/pstree, top, pidstat)

pstree를 사용하여 프로세스 트리를 봅니다. 모든 프로세스는 init 프로세스의 하위 프로세스입니다.

Linux에서 성능 이상 징후 발견 및 성능 모니터링

ps 명령

ps aux mysqld 또는 ps -elf mysqld를 사용할 수 있는 MySQL 프로세스와 같은 특정 프로세스를 봅니다. 이렇게 하면 둘 사이에는 본질적으로 차이가 없습니다. 왜냐하면 Linux는 Unix로부터 몇 가지 아이디어를 상속받기 때문입니다. 하나는 Unix의 Sys-v 스타일이고, 다른 하나는 BSD 스타일입니다

Linux에서 성능 이상 징후 발견 및 성능 모니터링

그의 정보를 자세히 볼 수 있습니다

pidstat 명령

pidstat를 사용하여 각 프로세스의 pid 상태 정보와 그것이 차지하는 CPU 정보

Linux에서 성능 이상 징후 발견 및 성능 모니터링

종합 표시(vmstat, top, sar)

Linux에서 성능 이상 징후 발견 및 성능 모니터링

메모리, 스왑 파티션, I/O, CPU 및 프로세스 컨텍스트 스위치 수를 볼 수 있습니다.

top 명령

Linux에서 성능 이상 징후 발견 및 성능 모니터링

이 인터페이스에서:

m을 눌러 메모리 사용량별로 정렬

P를 눌러 CPU 사용량별로 정렬

M을 눌러 상주 메모리 크기별로 정렬

k를 눌러 종료 프로세스


sar 명령

Linux에서 성능 이상 징후 발견 및 성능 모니터링

때로는 Linux를 시작하는 데 걸린 시간을 계산해야 할 수도 있습니다. uptime 명령을 사용하여 이 정보를 표시할 수 있으며, top은

uptime 명령

Linux에서 성능 이상 징후 발견 및 성능 모니터링

을 표시할 수도 있습니다.

Linux에서 성능 이상 징후 발견 및 성능 모니터링

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.