Linux 시스템에서 서버 로드가 발생하면 문제의 근본 원인을 식별하기 어려울 수 있습니다. 그러나 문제를 신속하게 해결하는 데 도움이 되는 몇 가지 도구와 명령이 있습니다.
1. Top Command: top 명령은 시스템 성능에 대한 실시간 보기를 제공하는 강력한 유틸리티입니다. 현재 시스템 부하, CPU 사용량, 메모리 사용량 및 리소스를 소비하는 상위 프로세스를 보여줍니다.
2. Htop 명령: Htop은 top과 유사하지만 몇 가지 추가 기능이 있는 대화식 프로세스 모니터링 도구입니다. Htop은 시스템 부하, CPU 사용량, 메모리 사용량 및 디스크 사용량에 대한 실시간 보기를 제공합니다. 또한 CPU 사용량, 메모리 사용량 또는 프로세스 ID와 같은 다양한 기준으로 프로세스를 정렬할 수 있습니다.
3. iostat 명령: iostat 명령은 입/출력(I/O) 성능에 대한 자세한 통계를 제공합니다. 각 장치의 현재 I/O 로드를 표시하고 평균 I/O 대기 시간 및 전송 속도에 대한 통계를 제공합니다.
4. Sar 명령: sar 명령은 시간 경과에 따른 시스템 성능 데이터를 제공하는 강력한 유틸리티입니다. 시스템 로드, CPU 사용량, 메모리 사용량 및 디스크 활동에 대한 정보를 표시할 수 있습니다. sar 명령은 자동으로 실행되도록 예약하고 나중에 분석할 수 있도록 데이터를 로그 파일에 저장할 수 있습니다.
5. Netstat 명령: netstat 명령은 네트워크 연결 및 네트워크 통계를 보여줍니다. 높은 서버 로드를 유발할 수 있는 네트워크 관련 문제를 식별하는 데 도움이 될 수 있습니다.
6. Ps 명령: ps 명령은 현재 실행 중인 프로세스의 스냅샷을 보여줍니다. 이를 사용하여 많은 시스템 리소스를 소비하는 프로세스를 식별할 수 있습니다.
7. Lsof 명령: lsof 명령은 열려 있는 파일과 이를 사용 중인 프로세스를 나열합니다. 디스크 I/O를 많이 사용하는 프로세스를 식별하는 데 도움이 될 수 있습니다.
8. Tcpdump 명령: tcpdump 명령은 네트워크 트래픽을 캡처하고 표시합니다. 높은 서버 로드를 유발할 수 있는 네트워크 관련 문제를 식별하는 데 도움이 될 수 있습니다.
이러한 명령 외에도 strace, vmstat 및 ltrace와 같은 서버 로드 문제를 진단하는 데 사용할 수 있는 다른 많은 도구와 유틸리티가 있습니다. 이러한 도구를 사용할 때 출력을 이해하고 무엇을 찾아야 하는지 아는 것이 중요합니다. 또한 문제를 나타낼 수 있는 비정상적인 동작을 신속하게 식별할 수 있도록 서버의 정상적인 동작을 기본적으로 이해하는 것이 중요합니다.
다음은 CPU, 메모리, 디스크 I/O 사용률 및 프로세스를 확인하기 위해 언급된 명령을 활용하는 Bash 스크립트의 예입니다.
#!/bin/bash
# Get CPU usage
echo "CPU usage:"
top -b -n 1 | grep '%Cpu' | awk '{print $2+$4}'
# Get memory usage
echo "Memory usage:"
free | grep Mem | awk '{printf("%.2f%"), $3/$2*100}'
# Get disk I/O utilization
echo "Disk I/O utilization:"
iostat -dx | awk '/sda/{print "Read: "$6" KB/s", "Write: "$7" KB/s"}'
# Get top 10 processes consuming resources
echo "Top 10 processes by CPU usage:"
ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%cpu | head -n 11
스크립트는 먼저 top 명령을 사용하고 grep 및 awk로 출력을 구문 분석하여 CPU 사용량을 가져옵니다. 그런 다음 free 명령을 사용하고 awk와 함께 사용된 백분율을 계산하여 메모리 사용량을 가져옵니다. 그런 다음 iostat 명령을 사용하고 awk로 sda 장치에 대한 출력을 필터링하여 디스크 I/O 사용률을 가져옵니다. 마지막으로 ps 명령을 사용하여 리소스를 소비하는 상위 10개 프로세스를 가져오고 --sort=-%cpu를 사용하여 CPU 사용량별로 정렬하고 head -n 11을 사용하여 처음 11개의 결과를 인쇄합니다.
'Linux' 카테고리의 다른 글
리눅스에서 tcpdump 사용방법 (0) | 2023.03.10 |
---|---|
SuSE HA에 관한 설명 및 특징 (0) | 2023.02.17 |
리눅스(Linux)의 종류와 특징(Debian, Ubuntu, Fedora, CentOS, RHEL, Mint) (0) | 2023.02.13 |
Linux 명령어 swappiness 설명 및 사용 (0) | 2023.02.13 |
Linux에서 swap 사용량을 확인하는 명령어 (0) | 2023.02.13 |
댓글