우리는 비정상적으로 높은 부하와 CPU 유틸리티를 가진 서버를 가지고 있지만 그 이유를 알 수는 없습니다. 우리가 정상을 돌 때 모든 procs는 매우 낮은 CPU 인 것처럼 보입니다.
http://cl.ly/2d1g0K3q261r0R0K3e35
이 원인을 찾는 더 좋은 방법이 있습니까?
우리는 비정상적으로 높은 부하와 CPU 유틸리티를 가진 서버를 가지고 있지만 그 이유를 알 수는 없습니다. 우리가 정상을 돌 때 모든 procs는 매우 낮은 CPU 인 것처럼 보입니다.
http://cl.ly/2d1g0K3q261r0R0K3e35
이 원인을 찾는 더 좋은 방법이 있습니까?
답변:
로드는 시스템이 1, 5 및 15 분 단위로 수행 한 워크로드를 측정 한 것입니다.
가장 일반적인 오해는 Load Average가 시스템의 CPU 사용량과 순수하게 연결되어 있다는 것입니다.
그러나로드에는 CPU가 I / O를 기다리는 등의 추가 측정이 포함되어 있습니다.
이미지를 기반으로 메모리가 부족하고 데이터를 디스크로 스왑하기 시작한 것 같습니다.
간단한 free -m
것은 얼마나 많은 RAM과 스왑이 사용되는지 알려줍니다.
흥미로운 열은 옆에있는 빈 열 -/+ buffers/cache
입니다.
0에 가까우면 RAM이 부족하고 그에 따라 작동해야합니다.
iotop
또는 vmstat
I / O인지 확인 하거나 시도 할 수 있습니다 .
다음을 사용하십시오.
top -o cpu
-o
플래그는 내림차순으로 CPU 사용에 의해 프로세스를 주문 상단 강제 할 것이다.
top -o cpu
"맨 위 : 알 수없는 논증 'o"를 얻었다
o
하면서 뛸 수 있어 기본 키를 요청해야합니다. 입력 cpu
하고 Enter를 누르십시오.
top -o %CPU
CPU 사용량이 스레드에서 발생하는 것 같습니다. top
이것을 고려하지 않은 것 같습니다. 나는 최근에 이것을 mysql 서버에서 보았다. INSERT 문이 실행 중이지만 mysqld의 일부 스레드가 테이블 인덱스를 업데이트했기 때문에 SELECT로 새 행을 가져올 수 없습니다. top은 하나의 코어에 100 % 사용자로드를 표시하지만 mysqld를 포함한 모든 프로세스는 0.0 % CPU입니다. 몇 시간 후 동일한 SELECT가 예상 결과 세트를 제공했습니다.
또한보십시오