Перейти к основному содержимому

Мониторинг производительности

Мониторинг производительности сервера 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 г.