Tutoriel Linux

리눅스 환경에서 htop을 사용하여 서버 부하를 읽을 때 색상 변화에 현혹되지 않는 방법

Débutant2 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

서버 속도가 느려지면, htop CPU 사용량 막대, 메모리 사용량, 색상, 사방으로 움직이는 프로세스 목록… 그리고 때로는 너무 많은 리소스를 사용하는 것처럼 보이는 첫 번째 프로세스를 종료하고 싶은 다소 위험한 충동까지.

먼저 htop을 살펴보는 것을 추천합니다. htop은 잠재적인 문제를 파악하는 데 도움이 되지만, 결론을 내리는 데 있어 신뢰할 만한 자료는 아닙니다. 이 글에서는 CPU 사용량, 메모리 사용량, 로드 평균, 프로세스 정렬, 그리고 가장 중요한 운영 서비스 종료 전 점검 사항 등 먼저 확인해야 할 사항들을 살펴보겠습니다.

Tux는 추상적인 모니터링 테이블을 사용하여 Linux 서버의 부하를 분석합니다.
Htop은 단서를 찾는 데 도움이 되지만, 프로세스를 중지하기 전에 로그와 서비스를 확인해야 합니다.

리눅스에 htop을 설치하고 실행하세요.

많은 배포판에서 htop은 기본적으로 설치되어 있지 않습니다. Debian이나 Ubuntu에서는 APT를 사용하여 htop을 추가할 수 있습니다.

sudo apt 업데이트
sudo apt install htop

페도라에서:

sudo dnf install htop

아치 리눅스에서:

sudo pacman -S htop

그런 다음 간단히 실행하세요.

htop

SSH를 통해 원격 서버에 연결된 경우, 깨끗한 세션에서 htop을 실행하십시오. 불안정한 세션이나 실수로 종료할 수 있는 터미널에서 파괴적인 작업을 수행하지 마십시오.

CPU 사용량 표시줄을 읽을 때 당황하지 마세요.

htop은 화면 상단에 각 CPU 코어 또는 스레드에 대한 막대 그래프를 표시합니다. 이는 부하가 분산되어 있는지 또는 단일 코어가 최대 용량으로 작동하고 있는지 확인하는 데 유용합니다.

CPU 사용량이 잠깐 급증하는 것 자체는 문제가 아닙니다. 백업, 컴파일, 바이러스 검사, 압축 작업 등은 모두 몇 초 동안 CPU 사용량을 급증시킬 수 있습니다. 제가 가장 관심을 갖는 것은 이러한 급증이 지속되는 시간과 관련된 프로세스입니다.

무엇을 건드리기 전에 사용 가능한 논리 프로세서의 수도 확인하십시오.

nproc

8개의 스레드가 있는 머신에서 로드 평균이 4인 것과 1개의 vCPU가 있는 소규모 VPS에서 로드 평균이 4인 것은 의미가 다릅니다. 간단한 차이점이지만, 잘못된 결정을 많이 방지할 수 있습니다.

가동 시간

주문 가동 시간 htop은 1분, 5분, 15분 동안의 평균 부하 값을 표시합니다. 세 값 모두 한동안 상승세를 보인다면, htop에서 보이는 단순한 스파이크보다 더 강력한 신호입니다.

이 점에 대해 더 자세히 알고 싶으시다면, 다음 기사를 참고하세요. Linux에서의 평균 로드 이 글은 그 내용을 잘 보완해 줍니다.

메모리 사용량: 캐시와 포화 상태를 혼동하지 마세요.

메모리 사용량은 종종 우려의 대상이 됩니다. 리눅스에서는 상당한 양의 RAM이 디스크 캐싱으로 사용될 수 있습니다. 하지만 이것이 반드시 나쁜 것은 아닙니다. 커널은 애플리케이션이 필요로 할 때 이 캐시를 해제합니다.

htop 외부에서 확인하려면 다음 명령을 실행하세요.

무료 -h

특히 열을 자세히 살펴보세요. 사용 가능편안한 상태를 유지한다면, htop 바가 매우 가득 차 보이더라도 메모리 부족이 주요 문제는 아닐 수 있습니다.

하지만 사용 가능한 메모리가 줄어들고 스왑 공간이 늘어나 서버 속도가 느려진다면, 메모리 사용량을 증가시키는 프로세스를 찾아야 합니다. htop에서는 메모리 사용량을 기준으로 정렬할 수 있습니다. F6그런 다음 열을 선택하십시오 MEM%.

ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | 머리

이 명령어는 대화형 인터페이스 외부에서 빠르게 출력 결과를 보여줍니다. htop이 설치되어 있지 않거나 출력 결과를 티켓에 복사하려는 경우 문제 해결에 유용할 수 있습니다.

진범을 찾기 위해 여러 과정을 꼼꼼히 살펴봅니다.

htop에서 맨 아래 목록에는 프로세스가 표시됩니다. 처음에 가장 유용한 열은 다음과 같습니다. PID, 사용자, CPU%, MEM%, 시간+ 그리고 명령.

알아두어야 할 몇 가지 사항:

  • F6 정렬할 열을 선택합니다.
  • F4 목록을 필터링하려면;
  • F5 프로세스 트리를 표시하기 위해;
  • F9 프로세스에 신호를 보내다;
  • htop을 깔끔하게 종료하려면.

트리 뷰는 매우 유용합니다. 이를 통해 리소스를 많이 사용하는 프로세스가 서비스, 스크립트, SSH 사용자 또는 웹 서버의 하위 프로세스에 의해 실행되었는지 확인할 수 있습니다.

Java, PHP, Python 또는 Node 프로세스가 많은 리소스를 소비하는 것을 발견하면 임의로 종료하지 마세요. 먼저 해당 프로세스가 속한 서비스를 확인하십시오.

systemctl status nginx --no-pager
systemctl status php8.4-fpm --no-pager
systemctl status mariadb --no-pager

물론, 서비스 이름은 사용하시는 서버에 맞게 변경하십시오. 어떤 서비스가 실행 중인지 모르는 경우, 관련 문서를 참조하십시오. Linux 서비스 목록을 보여주는 systemctl 명령어 더 나아가기 전에 이 점을 고려하는 것이 더 적절할 것입니다.

프로세스를 종료하기 전에 로그를 확인하세요.

htop에서 가장 매력적인 버튼은 F9이 명령어는 프로세스에 신호를 보내는 데 사용됩니다. 기술적으로는 htop에서 PID를 종료할 수 있지만, 실제 사용에서는 보통 마지막에 하는 작업이지 가장 먼저 하는 작업은 아닙니다.

서비스를 종료하기 전에 최근 로그를 확인하세요.

sudo journalctl -u nginx -n 80 --no-pager

서비스가 특정 파일에 기록하는 경우 몇 초 동안 해당 내용을 확인하세요.

sudo tail -f /var/log/nginx/error.log

이 부분은 다시 읽어보셔도 좋습니다. 테일 로그 및 라이브 로그 모니터링에 관한 기사이는 컨텍스트 없이 htop 앞에 갇히는 것을 방지합니다.

해당 프로세스가 systemd 서비스에 속하는 경우, 정상적으로 재부팅하는 것이 좋습니다.

sudo systemctl restart nginx
sudo systemctl status nginx --no-pager

PID 제어기에 신호를 보내야 한다면, 다음 단계를 먼저 진행하세요. 용어. 유지하다 죽이다 프로세스가 완전히 응답하지 않는 경우.

sudo kill -TERM 1234
sudo kill -KILL 1234

바꾸다 천이백삼십사 실제 PID를 확인하세요. 데이터베이스, 스토리지, 프로덕션 서버 또는 활성 클라이언트 세션에 접속 중이라면, 어떤 작업을 하기 전에 30초 정도 더 기다리세요. 그러면 실제 오류를 방지할 수 있는 경우가 많습니다.

htop만으로는 부족할 때

Htop은 프로세스를 매우 잘 보여주지만, 전체적인 상황을 모두 알려주지는 않습니다. 높은 부하의 원인은 CPU, 메모리, 디스크 I/O, 네트워크, 차단된 서비스 또는 일반적인 애플리케이션 사용량 급증 등 다양할 수 있습니다.

잠시 되돌아보면:

vmstat 1 5
systemctl --실패
journalctl -p 경고..알림 -b --no-pager

vmstat CPU, 메모리, 스왑 및 I/O 대기 시간을 빠르게 확인할 수 있습니다. systemctl --실패 실패한 장치 목록을 보여줍니다. 저널 현재 시작 과정에서 발생하는 경고를 식별할 수 있습니다.

문제가 네트워크 포트 또는 더 이상 수신 대기하지 않는 서비스와 관련된 경우, 실제로 열려 있는 포트도 확인하십시오. 리눅스에서 ss 또는 netstat.

서버 속도가 느릴 때 빠르게 대처하는 방법

속도가 느린 서버에서 htop을 실행하면 다음과 같은 순서로 진행됩니다.

  • 부하 평균을 살펴보세요 가동 시간 그리고 이를 CPU 스레드 수와 비교하십시오.
  • 사용 가능한 메모리를 확인하세요 무료 -h ;
  • htop을 CPU 기준으로 정렬한 다음 메모리 기준으로 정렬합니다.
  • 해당 프로세스를 담당하는 부서 또는 사용자를 식별하십시오.
  • 프로세스를 재시작하거나 종료하기 전에 로그를 읽어보세요.
  • 해당 프로세스가 서비스에 의존하는 경우 systemctl을 사용하여 정상적으로 재부팅하십시오.

Htop은 현재 상황을 파악하는 데 매우 유용합니다. 하지만 올바른 결정은 단 하나의 색상이나 열 정보만으로는 얻기 어렵습니다. PID, 서비스, 로그 등을 종합적으로 고려한 후에야 적절한 조치를 취할 수 있습니다.

참고 자료는 공식 웹사이트에서 확인할 수 있습니다. htop, 그녀의 GitHub 저장소그리고 맨 페이지 맨 위 부하 및 프로세스와 관련된 개념에 대해 설명합니다.

sudo apt update && sudo apt upgrade