Мониторинг производительности
Эта страница переведена сообществом на русский язык, но нуждается в улучшениях. Если вы хотите принять участие в переводе свяжитесь с @alexgton.
Мониторинг производительности сервера TON
Такие инструменты, как htop
, iotop
, iftop
, dstat
, nmon
и другие, подходят для измерения производительности в реальном времени, но их функционала не хватает для изучения проблем производительности в прошлом.
Это руководство рекомендует и объясняет, как использовать утилиту Linux sar (System Activity Report) для мониторинга производительности сервера TON.
Эта рекомендация помогает определить, испытывает ли Ваш сервер нехватку ресурсов, а не то, что движок валидатора работает плохо.
Установка
Установка 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, с указанием файла определенного дня месяца. Таким образом, для 23 сентября это будет:
sar -f /var/log/sysstat/sa23
Какие отчеты sar нужно запускать и как их читать, чтобы выявить проблемы с производительностью?
Ниже приведен список команд sar, которые можно использовать для сбора различной системной статистики. Вы можете дополнить их приведенными выше параметрами, чтобы быстро получить отчет за нужную дату.
Отчет о памяти
sar -rh
Поскольку движок валидатора TON использует функцию jemalloc, он кэширует много данных. По этой причине команда sar -rh чаще всего возвращает низкое число в колонке %memused
.
В то же время, в колонке kbcached
всегда будет высокое число. По той же причине Вам не стоит беспокоиться о низком количестве свободной оперативной памяти, показанном в колонке kbmemfree
. Однако важным показателем является число, полученное из столбца %memused
.
Если оно превышает 90%, Вам следует задуматься о добавлении большего объема оперативной памяти и следить за тем, не останавливается ли движок валидатора по причине OOM (out of memory - нехватка памяти) - лучший способ проверить это - поискать сообщения Signal в файле /var/ton-work/log
.
Использование свопа
sar -Sh
Если Вы заметили, что используется своп, желательно увеличить объём оперативной памяти. В целом, команда TON Core рекомендует отключить своп.
Отчет по процессору
sar -u
Если Ваш сервер в среднем использует процессор на 70% (см. колонку '%user'), это можно считать хорошим показателем.
Отчет об использовании диска
sar -dh
Следите за колонкой '%util' и реагируйте соответственно, если она остается выше 90% для определенного диска.
Сетевой отчет
sar -n DEV -h
или
sar -n DEV -h --iface=<interface name>
если Вы хотите отфильтровать результаты по имени сетевого интерфейса.
Обратить внимание на колонку %ifutil
- она показывает использование Вашего интерфейса с учетом его максимальной скорости соединения.
Вы можете уз нать, какую скорость поддерживает Ваша сетевая карта, выполнив команду:
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 и измерьте скорость дискового ввода-вывода и скорость сети.
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 Мбит/с должна считаться хорошей.
При составлении отчета, пожалуйста, отправьте отчет SAR, а также результаты IOPS и скорости сети на @mytonctrl_help_bot.
Первоначальная версия от @neodix - Команда Ton Core, 23 сентября 2024 г.