성능 모니터링
TON 서버 성능 모니터링
htop
, iotop
, iftop
, dstat
, nmon
등의 도구는 실시간 성능 측정에는 좋지만 과거 성능 문제를 해결할 때는 기능이 부족합니다.
이 가이드에서는 TON 서버 성능 모니터링을 위한 Linux sar(System Activity Report) 유틸리티 사용법을 설명합니다.
이 가이드라인은 validator-engine의 성능이 아닌 서버의 리소스 부족 여부를 확인하는 데 도움이 됩니다.
설치
SAR 설치
sudo apt-get install sysstat
자동 통계 수집 활성화
sudo sed -i 's/false/true/g' /etc/default/sysstat
서비스 활성화
sudo systemctl enable sysstat sysstat-collect.timer sysstat-summary.timer
서비스 시작
sudo systemctl start sysstat sysstat-collect.timer sysstat-summary.timer
사용법
기본적으로 sar는 10분마다 통계를 수집하고 자정부터 시작하는 현재 날짜의 통계를 보여줍니다. 매개변수 없이 sar를 실행하여 확인할 수 있습니다:
sar
전날이나 이틀 전의 통계를 보려면 숫자를 옵션으로 전달하세요:
sar -1 # previous day
sar -2 # two days ago
정확한 날짜를 보려면 f 옵션을 사용하여 해당 월의 특정 날짜의 sa 파일을 지정해야 합니다. 9월 23일의 경우:
sar -f /var/log/sysstat/sa23
성능 문제를 식별하기 위해 sar 보고서를 실행하고 읽는 방법은 무엇일까요?
아래는 다양한 시스템 통계를 수집하는 데 사용할 수 있는 sar 명령어 목록입니다. 위의 옵션들과 함께 사용하여 필요한 날짜의 보고서를 빠르게 얻을 수 있습니다.
메모리 보고서
sar -rh
TON validator-engine는 jemalloc 기능을 사용하여 많은 데이터를 캐시하기 때문에, sar -rh 명령은 대부분 %memused
열에서 낮은 수치를 반환합니다.
동시에 kbcached
열에는 항상 높은 수치가 표시됩니다. 같은 이유로 kbmemfree
열에 표시되는 낮은 여유 RAM에 대해 걱정할 필요가 없습니다. 중요한 지표는 %memused
열의 수치입니다.
90% 이상으로 올라가면 RAM을 추가하는 것을 고려해야 하며, validator engine이 OOM(메모리 부족) 이유로 비정상적으로 중지되지 않는지 주의해서 확인해야 합니다 - 이를 확인하는 가장 좋은 방법은 /var/ton-work/log
파일에서 Signal 메시지를 grep하는 것입니다.
스왑 사용량
sar -Sh
스왑이 사용되는 것이 확인되면 RAM을 추가하는 것을 고려해야 합니다. TON Core 팀의 일반적인 권장사항은 스왑을 비활성화하는 것입니다.
CPU 보고서
sar -u
서버가 평균적으로 CPU를 70%까지 사용하는 경우('%user' 열 참조), 이는 좋은 상태로 간주됩니다.
디스크 사용량 보고서
sar -dh
'%util' 열을 확인하고 특정 디스크에서 90% 이상 지속되는 경우 적절히 대응하세요.
네트워크 보고서
sar -n DEV -h
또는
sar -n DEV -h --iface=<interface name>
네트워크 인터페이스 이름으로 결과를 필터링하려는 경우.
%ifutil
열의 결과를 확인하세요 - 최대 링크 속도를 고려한 인터페이스 사용량을 보여줍니다.
아래 명령을 실행하여 NIC가 지원하는 속도를 확인할 수 있습니다:
cat /sys/class/net/<interface>/speed
이는 제공업체가 제공한 링크 속도가 아닙니다.
%ifutil
이 70% 이상의 사용량을 보이거나, rxkB/s와 txkB/s 열이 제공업체가 제공한 대역폭에 가까운 값을 보고하는 경우 링크 속도 업그레이드를 고려하세요.
성능 문제 보고
성능 문제를 보고하기 전에 노드의 최소 요구사항을 충족하고 있는지 확인하세요. 그런 다음 다음 명령을 실행하세요:
sar -rudh | cat && sar -n DEV -h --iface=eno1 | cat > report_today.txt
어제의 보고서를 위해 실행:
sar -rudh -1 | cat && sar -n DEV -h --iface=eno1 -1 | cat > report_yesterday.txt
또한 TON 노드를 중지하고 디스크 IO와 네트워크 속도를 측정하세요.
sudo fio --randrepeat=1 --ioengine=io_uring --direct=1 --gtod_reduce=1 --name=test --filename=/var/ton-work/testfile --bs=4096 --iodepth=1 --size=40G --readwrite=randread --numjobs=1 --group_reporting
read: IOPS=
값을 확인하고 보고서와 함께 보내세요. 10k IOPS 이상의 값이 좋은 것으로 간주됩니다.
curl -s https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py | python3 -
700 Mbit/s 이상의 다운로드 및 업로드 속도가 좋은 것으로 간주됩니다.
보고할 때는 SAR 보고서와 IOPS 및 네트워크 속도 결과를 @mytonctrl_help_bot에 보내주세요.
초기 버전 작성: @neodix - Ton Core 팀, 2024년 9월 23일