Четыре обещания карточки тарифа и инструменты, которыми они проверяются
Карточка тарифа — это маркетинг. Вывод команды — это факт. Между ними обычно есть зазор, и узнать его размер удобнее всего в те первые часы, когда машина ещё пустая: нагрузки нет, измерения не искажены, а деньги при почасовой оплате или гарантии возврата пока можно забрать обратно. Потом на сервере появятся пользователи, и любые цифры начнут читаться как «ну, терпимо».
Собрал восемь проверок, которые закрывают четыре главных обещания любого VPS-тарифа: процессор, диск, канал и адрес. Всё, кроме fio, укладывается в считанные минуты.
⚠️ ОСТОРОЖНО
Порядок здесь принципиален: сначала замеры, потом установка чего бы то ни было. Запущенный в фоне Xray сам создаёт нагрузку — и в статистике процессора, и в выводе iperf3. Мерить сервер поверх собственного сервиса означает мерить собственный сервис.
Проверка, с которой всё начинается: а это точно виртуальная машина?
Под вывеской «VPS» продают две принципиально разные вещи. Одна — настоящая виртуалка со своим ядром. Вторая — контейнер, который делит ядро с соседями по хосту. Отличать их надо в первую очередь, потому что от ответа зависит, имеет ли смысл всё остальное.
systemd-detect-virt
Утилита печатает название технологии виртуализации; код возврата 0 означает, что виртуализация найдена, ненулевой — что машина железная. Ответ kvm — хорошо. Ответы lxc, lxc-libvirt, openvz, podman — вы в контейнере. Когда слои вложены друг в друга, показывается самый внутренний, а ключи --vm и --container позволяют посмотреть на конкретный уровень.
Разработчики LXC описывают задачу проекта так: «создать окружение, максимально близкое к обычной установке Linux, но без необходимости в отдельном ядре». Из отсутствия собственного ядра следует всё остальное. modprobe работать не будет. Ядерный WireGuard — а он живёт в mainline начиная с 5.6 — не поднимется. Сетевые sysctl либо доступны только на чтение, либо относятся ко всему хосту, и трогать их вам не позволят. Вывод nproc будет показывать процессоры физической машины, к которым вы отношения не имеете.
❗ ГЛАВНОЕ
Контейнер сам по себе не является мошенничеством. Как формат за пару долларов он честен и вполне годится под статический сайт, бота или зеркало репозитория. Проблема возникает тогда, когда машина покупалась под задачи, требующие модулей ядра, — и вот эту несостыковку стоит обнаружить в первый день, а не в тот момент, когда до запуска остаётся час.
Сразу же посмотрите на TUN — без этого устройства не заработает ни один туннель:
ls -l /dev/net/tun
Адрес достался вам не новым
Начну с самой дешёвой проверки, потому что она занимает минуту, а отменить покупку по её итогам иногда приходится. IPv4 выделен лично вам — но не выпущен из типографии сегодня. У адреса есть прошлое, и оно наследуется вместе с ним.
Первый запрос вытаскивает PTR-запись. Отсутствие записи или чужое имя от прежнего арендатора гарантируют, что исходящая почта осядет в спаме. Второй запрос адресован зоне Zen, куда адрес подставляется задом наперёд. NXDOMAIN, то есть пустой ответ, означает отсутствие в списках. Коды же расшифровываются так: 127.0.0.2 — SBL, 127.0.0.3 — CSS, 127.0.0.4 — XBL, а 127.0.0.10 и 127.0.0.11 — две разновидности PBL.
⚠️ ОСТОРОЖНО
Отдельно запомните код 127.255.255.254 — «запрос через публичный резолвер». Это не приговор адресу, а отказ в обслуживании: запросы, пришедшие через 8.8.8.8, 1.1.1.1 и им подобные, Spamhaus не обрабатывает. Спрашивать надо у резолвера хостера либо через веб-форму, иначе вывод получится ложным.
И последнее по адресу, но не по важности: убедитесь, что он вообще отвечает из той страны, ради которой сервер покупался. Для вас чистая подсеть и подсеть, где предыдущий сосед полгода собирал жалобы, выглядят одинаково — а для сети назначения нет. Внешний сервис вроде check-host.net закрывает этот вопрос за минуту, и эта минута отделяет спокойный возврат денег от полугода переписки с пользователями, у которых «не подключается».
«2 vCPU» — это доля, а не ядро
Виртуальный процессор не равен физическому: вам продаётся доля процессорного времени, которую распределяет гипервизор. Какую её часть у вас забирают, показывает счётчик steal.
vmstat 1 10
Man-страница определяет колонку st как «время, украденное у виртуальной машины», добавляя, что до ядра 2.6.11 оно попросту не учитывалось. Источник данных — восьмое поле строки cpu в /proc/stat; документация ядра называет его involuntary wait, вынужденным ожиданием. Проще говоря, это моменты, когда ваш процесс был готов исполняться, а такт физического ядра ушёл соседу.
Значение st
Интерпретация
0–1 %
Норма. Оверселлинга либо нет, либо соседи спят
2–5 %
Терпимо для веб-сервера, заметно для прокси-ноды с TLS
5–15 %
Ядро поделено плотно; под нагрузкой latency поедет
> 15 % устойчиво
Вы платите за долю, которой не получаете
Эти границы — не норматив, а бытовой ориентир. Официально допустимого steal не существует нигде, да и ощущается одна и та же цифра по-разному: батч-задача её переживёт, интерактивный трафик — нет. Куда содержательнее не мгновенный процент, а его устойчивость: держится ли он десять минут кряду и воспроизводится ли вечером так же, как утром.
📌 ЗАМЕТКА
К соседней колонке wa (iowait) на виртуальной машине относитесь скептически. Формулировка в документации ядра недвусмысленна: «iowait ненадёжен при чтении из /proc/stat». Величина способна даже убывать, а на нескольких ядрах её корректный подсчёт затруднён. Диск оценивают не по ней, а через fio — к этому переходим ниже.
Владельцам будущих TLS-узлов стоит дополнительно выяснить, прокинут ли внутрь аппаратный AES:
Штатная утилита openssl speed предназначена для измерения производительности криптоалгоритмов, а ключ -evp прогоняет шифр через EVP-интерфейс. Между AES-NI и программной реализацией разница измеряется не процентами, а кратностью, и на прокси-узле она напрямую задаёт потолок пропускной способности. Отсутствие флага aes в /proc/cpuinfo на тарифе, который продавали «под VPN», — законный повод для вопроса поддержке.
Диск: чем плох популярный способ его «проверить»
Фраза «прогнал dd, всё летает» не говорит о диске ничего. Команда dd if=/dev/zero of=test bs=1M count=1024 пишет последовательно и складывает данные в страничный кэш, а отдельные файловые системы ещё и схлопывают нули. Измеренной в итоге окажется память хоста.
⛔ ТАК ДЕЛАТЬ НЕЛЬЗЯ
Ни dd, ни hdparm -t, ни «скачался файл быстро» бенчмарком хранилища не являются. Ни один из них не даёт случайной нагрузки с очередью запросов, а губит СУБД и логи панели именно она. Инструмент здесь один — fio с флагом --direct=1.
Разберу ключи. Флаг --direct=1 переводит ввод-вывод в небуферизованный режим (O_DIRECT): запросы обходят страничный кэш, поэтому вы наблюдаете хранилище, а не оперативную память. Пара --bs=4k и --rw=randread задаёт случайное чтение четырёхкилобайтными блоками, что соответствует профилю базы данных, а не перекачки видеофайлов. Ключ --iodepth=32 удерживает очередь заполненной, а --time_based не позволяет тесту закончиться раньше шестидесятой секунды, даже когда гигабайт уже прочитан.
В отчёте существенны два показателя: IOPS и хвост распределения задержек в блоке clat percentiles. Среднее значение обманчиво, смотреть надо на 99-й процентиль. Хранилище с приличными IOPS и сотнями миллисекунд на p99 обернётся панелью, которая периодически «подвисает» ровно на глазах у пользователя.
Гигабитный порт — и где он заканчивается
Цифра в тарифе описывает скорость порта. Порт — это первый метр маршрута, а не весь маршрут.
Предлагаемый многими хостерами тест «скачайте файл с нашего соседнего сервера» подтверждает работоспособность виртуального адаптера — и ровно на этом его польза заканчивается. Осмысленная проверка стартует с публичного iperf3, стоящего в другой стране:
Список публичных площадок опубликован на iperf.fr, и там же приводится оговорка, экономящая полчаса недоумения: одновременно сервер обслуживает лишь одно подключение. Если занято — берите следующий порт диапазона либо другую локацию. Прогонять непременно оба направления: перекос вида «отдаёт 900, принимает 80» — фирменный признак перегруженного аплинка.
Следом смотрим маршрут:
mtr -rwzbc 100 1.1.1.1
ℹ️ СПРАВКА
Сами по себе потери на промежуточных узлах в отчёте mtr ни о чём не свидетельствуют. Значительная часть маршрутизаторов сознательно понижает приоритет адресованных им же ICMP-ответов, продолжая при этом передавать транзитный трафик без единой потери. Выводы делаются исключительно по финальной строке: потери на пятом хопе при чистом последнем — штатная картина.
Если серверу предстоит нести туннель, проверьте заодно MTU:
ping -M do -s 1472 1.1.1.1
Полезная нагрузка 1472 байта вместе с 28 байтами заголовков даёт ровно 1500. Непрохождение пакета означает, что где-то по пути MTU ниже, а это будущие подвисающие TLS-хендшейки внутри туннеля. На такой случай в ядре предусмотрен параметр net.ipv4.tcp_mtu_probing: согласно документации, 0 — «выключено», 1 — «выключено по умолчанию, включается при обнаружении ICMP black hole», 2 — «всегда включено, начальный MSS берётся из tcp_base_mss».
Наконец, стоит выяснить, есть ли у вас выбор алгоритма контроля перегрузки:
sysctl net.ipv4.tcp_available_congestion_control
Документация ядра обещает присутствие одного лишь reno, остальное определяется конфигурацией сборки. Когда bbr в перечне отсутствует, а modprobe tcp_bbr не спасает, ответ почти наверняка находится в самом первом разделе — про виртуализацию.
✅ КАК ПРАВИЛЬНО
Короткий протокол приёмки, который имеет смысл прогнать до переезда чего-либо важного:
systemd-detect-virt — KVM или контейнер; плюс ls -l /dev/net/tun
dig -x и запрос в Zen с резолвера хостера
Доступность адреса из целевой страны
vmstat 1 10 в разное время суток — устойчивость st
Далеко не всякая некрасивая цифра означает обман. Три процента steal на самом дешёвом тарифе — это ровно тот товар, за который заплачено: доля ядра стоит дешевле ядра, и иного никто не обещал. Двадцать тысяч IOPS вместо рекламных «до ста тысяч» тоже укладываются в норму, поскольку предлог «до» в маркетинге обозначает пиковую цифру хоста, а не вашу.
Обращаться в поддержку разумно там, где обещание звучало конкретно и не выполнено: продавали KVM — выдали LXC; заявляли выделенный порт — а реальная скорость стабильно вдвое ниже в обоих направлениях; обещали NVMe — задержки соответствуют сетевому HDD. Во всех прочих ситуациях спор бесполезнее, чем архив: сохраните результаты замеров в заметку. Полгода спустя, когда сервер начнёт подтормаживать, вам будет с чем сравнивать. Наличие этих цифр — вся разница между «кажется, стало хуже» и «p99 вырос втрое с марта».
Какой из замеров у вас чаще прочих ставил на сервере крест? У меня лидирует не steal и не диск, а перекос в iperf3: наружу летит, внутрь еле ползёт. Любопытно собрать чужие критерии «всё, оформляю возврат» — и услышать, случалось ли, что провайдер по предъявленным цифрам действительно переносил машину на другой хост.
Вы можете написать сейчас и зарегистрироваться позже.
Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.
Карточка тарифа — это маркетинг. Вывод команды — это факт. Между ними обычно есть зазор, и узнать его размер удобнее всего в те первые часы, когда машина ещё пустая: нагрузки нет, измерения не искажены, а деньги при почасовой оплате или гарантии возврата пока можно забрать обратно. Потом на сервере появятся пользователи, и любые цифры начнут читаться как «ну, терпимо».
Собрал восемь проверок, которые закрывают четыре главных обещания любого VPS-тарифа: процессор, диск, канал и адрес. Всё, кроме fio, укладывается в считанные минуты.
⚠️ ОСТОРОЖНО
Порядок здесь принципиален: сначала замеры, потом установка чего бы то ни было. Запущенный в фоне Xray сам создаёт нагрузку — и в статистике процессора, и в выводе
iperf3. Мерить сервер поверх собственного сервиса означает мерить собственный сервис.Проверка, с которой всё начинается: а это точно виртуальная машина?
Под вывеской «VPS» продают две принципиально разные вещи. Одна — настоящая виртуалка со своим ядром. Вторая — контейнер, который делит ядро с соседями по хосту. Отличать их надо в первую очередь, потому что от ответа зависит, имеет ли смысл всё остальное.
Утилита печатает название технологии виртуализации; код возврата 0 означает, что виртуализация найдена, ненулевой — что машина железная. Ответ
kvm— хорошо. Ответыlxc,lxc-libvirt,openvz,podman— вы в контейнере. Когда слои вложены друг в друга, показывается самый внутренний, а ключи--vmи--containerпозволяют посмотреть на конкретный уровень.Разработчики LXC описывают задачу проекта так: «создать окружение, максимально близкое к обычной установке Linux, но без необходимости в отдельном ядре». Из отсутствия собственного ядра следует всё остальное.
modprobeработать не будет. Ядерный WireGuard — а он живёт в mainline начиная с 5.6 — не поднимется. Сетевыеsysctlлибо доступны только на чтение, либо относятся ко всему хосту, и трогать их вам не позволят. Выводnprocбудет показывать процессоры физической машины, к которым вы отношения не имеете.❗ ГЛАВНОЕ
Контейнер сам по себе не является мошенничеством. Как формат за пару долларов он честен и вполне годится под статический сайт, бота или зеркало репозитория. Проблема возникает тогда, когда машина покупалась под задачи, требующие модулей ядра, — и вот эту несостыковку стоит обнаружить в первый день, а не в тот момент, когда до запуска остаётся час.
Сразу же посмотрите на TUN — без этого устройства не заработает ни один туннель:
Адрес достался вам не новым
Начну с самой дешёвой проверки, потому что она занимает минуту, а отменить покупку по её итогам иногда приходится. IPv4 выделен лично вам — но не выпущен из типографии сегодня. У адреса есть прошлое, и оно наследуется вместе с ним.
Первый запрос вытаскивает PTR-запись. Отсутствие записи или чужое имя от прежнего арендатора гарантируют, что исходящая почта осядет в спаме. Второй запрос адресован зоне Zen, куда адрес подставляется задом наперёд. NXDOMAIN, то есть пустой ответ, означает отсутствие в списках. Коды же расшифровываются так:
127.0.0.2— SBL,127.0.0.3— CSS,127.0.0.4— XBL, а127.0.0.10и127.0.0.11— две разновидности PBL.⚠️ ОСТОРОЖНО
Отдельно запомните код 127.255.255.254 — «запрос через публичный резолвер». Это не приговор адресу, а отказ в обслуживании: запросы, пришедшие через 8.8.8.8, 1.1.1.1 и им подобные, Spamhaus не обрабатывает. Спрашивать надо у резолвера хостера либо через веб-форму, иначе вывод получится ложным.
И последнее по адресу, но не по важности: убедитесь, что он вообще отвечает из той страны, ради которой сервер покупался. Для вас чистая подсеть и подсеть, где предыдущий сосед полгода собирал жалобы, выглядят одинаково — а для сети назначения нет. Внешний сервис вроде check-host.net закрывает этот вопрос за минуту, и эта минута отделяет спокойный возврат денег от полугода переписки с пользователями, у которых «не подключается».
«2 vCPU» — это доля, а не ядро
Виртуальный процессор не равен физическому: вам продаётся доля процессорного времени, которую распределяет гипервизор. Какую её часть у вас забирают, показывает счётчик steal.
Man-страница определяет колонку
stкак «время, украденное у виртуальной машины», добавляя, что до ядра 2.6.11 оно попросту не учитывалось. Источник данных — восьмое поле строкиcpuв/proc/stat; документация ядра называет его involuntary wait, вынужденным ожиданием. Проще говоря, это моменты, когда ваш процесс был готов исполняться, а такт физического ядра ушёл соседу.stЭти границы — не норматив, а бытовой ориентир. Официально допустимого steal не существует нигде, да и ощущается одна и та же цифра по-разному: батч-задача её переживёт, интерактивный трафик — нет. Куда содержательнее не мгновенный процент, а его устойчивость: держится ли он десять минут кряду и воспроизводится ли вечером так же, как утром.
📌 ЗАМЕТКА
К соседней колонке
wa(iowait) на виртуальной машине относитесь скептически. Формулировка в документации ядра недвусмысленна: «iowait ненадёжен при чтении из/proc/stat». Величина способна даже убывать, а на нескольких ядрах её корректный подсчёт затруднён. Диск оценивают не по ней, а через fio — к этому переходим ниже.Владельцам будущих TLS-узлов стоит дополнительно выяснить, прокинут ли внутрь аппаратный AES:
Штатная утилита
openssl speedпредназначена для измерения производительности криптоалгоритмов, а ключ-evpпрогоняет шифр через EVP-интерфейс. Между AES-NI и программной реализацией разница измеряется не процентами, а кратностью, и на прокси-узле она напрямую задаёт потолок пропускной способности. Отсутствие флагаaesв/proc/cpuinfoна тарифе, который продавали «под VPN», — законный повод для вопроса поддержке.Диск: чем плох популярный способ его «проверить»
Фраза «прогнал dd, всё летает» не говорит о диске ничего. Команда
dd if=/dev/zero of=test bs=1M count=1024пишет последовательно и складывает данные в страничный кэш, а отдельные файловые системы ещё и схлопывают нули. Измеренной в итоге окажется память хоста.⛔ ТАК ДЕЛАТЬ НЕЛЬЗЯ
Ни
dd, ниhdparm -t, ни «скачался файл быстро» бенчмарком хранилища не являются. Ни один из них не даёт случайной нагрузки с очередью запросов, а губит СУБД и логи панели именно она. Инструмент здесь один — fio с флагом--direct=1.Разберу ключи. Флаг
--direct=1переводит ввод-вывод в небуферизованный режим (O_DIRECT): запросы обходят страничный кэш, поэтому вы наблюдаете хранилище, а не оперативную память. Пара--bs=4kи--rw=randreadзадаёт случайное чтение четырёхкилобайтными блоками, что соответствует профилю базы данных, а не перекачки видеофайлов. Ключ--iodepth=32удерживает очередь заполненной, а--time_basedне позволяет тесту закончиться раньше шестидесятой секунды, даже когда гигабайт уже прочитан.В отчёте существенны два показателя: IOPS и хвост распределения задержек в блоке
clat percentiles. Среднее значение обманчиво, смотреть надо на 99-й процентиль. Хранилище с приличными IOPS и сотнями миллисекунд на p99 обернётся панелью, которая периодически «подвисает» ровно на глазах у пользователя.Гигабитный порт — и где он заканчивается
Цифра в тарифе описывает скорость порта. Порт — это первый метр маршрута, а не весь маршрут.
Предлагаемый многими хостерами тест «скачайте файл с нашего соседнего сервера» подтверждает работоспособность виртуального адаптера — и ровно на этом его польза заканчивается. Осмысленная проверка стартует с публичного
iperf3, стоящего в другой стране:Список публичных площадок опубликован на iperf.fr, и там же приводится оговорка, экономящая полчаса недоумения: одновременно сервер обслуживает лишь одно подключение. Если занято — берите следующий порт диапазона либо другую локацию. Прогонять непременно оба направления: перекос вида «отдаёт 900, принимает 80» — фирменный признак перегруженного аплинка.
Следом смотрим маршрут:
ℹ️ СПРАВКА
Сами по себе потери на промежуточных узлах в отчёте
mtrни о чём не свидетельствуют. Значительная часть маршрутизаторов сознательно понижает приоритет адресованных им же ICMP-ответов, продолжая при этом передавать транзитный трафик без единой потери. Выводы делаются исключительно по финальной строке: потери на пятом хопе при чистом последнем — штатная картина.Если серверу предстоит нести туннель, проверьте заодно MTU:
Полезная нагрузка 1472 байта вместе с 28 байтами заголовков даёт ровно 1500. Непрохождение пакета означает, что где-то по пути MTU ниже, а это будущие подвисающие TLS-хендшейки внутри туннеля. На такой случай в ядре предусмотрен параметр
net.ipv4.tcp_mtu_probing: согласно документации,0— «выключено»,1— «выключено по умолчанию, включается при обнаружении ICMP black hole»,2— «всегда включено, начальный MSS берётся изtcp_base_mss».Наконец, стоит выяснить, есть ли у вас выбор алгоритма контроля перегрузки:
Документация ядра обещает присутствие одного лишь
reno, остальное определяется конфигурацией сборки. Когдаbbrв перечне отсутствует, аmodprobe tcp_bbrне спасает, ответ почти наверняка находится в самом первом разделе — про виртуализацию.✅ КАК ПРАВИЛЬНО
Короткий протокол приёмки, который имеет смысл прогнать до переезда чего-либо важного:
systemd-detect-virt— KVM или контейнер; плюсls -l /dev/net/tundig -xи запрос в Zen с резолвера хостераvmstat 1 10в разное время суток — устойчивостьstgrep -o -m1 aes /proc/cpuinfoплюсopenssl speed -evp aes-128-gcmfio, случайное чтение 4k,--direct=1— IOPS и p99iperf3в обе стороны до сервера в другой странеmtr -rwzbc 100— читать последнюю строкуЧто из намеренного считать браком
Далеко не всякая некрасивая цифра означает обман. Три процента steal на самом дешёвом тарифе — это ровно тот товар, за который заплачено: доля ядра стоит дешевле ядра, и иного никто не обещал. Двадцать тысяч IOPS вместо рекламных «до ста тысяч» тоже укладываются в норму, поскольку предлог «до» в маркетинге обозначает пиковую цифру хоста, а не вашу.
Обращаться в поддержку разумно там, где обещание звучало конкретно и не выполнено: продавали KVM — выдали LXC; заявляли выделенный порт — а реальная скорость стабильно вдвое ниже в обоих направлениях; обещали NVMe — задержки соответствуют сетевому HDD. Во всех прочих ситуациях спор бесполезнее, чем архив: сохраните результаты замеров в заметку. Полгода спустя, когда сервер начнёт подтормаживать, вам будет с чем сравнивать. Наличие этих цифр — вся разница между «кажется, стало хуже» и «p99 вырос втрое с марта».
Источники
cpu, определение steal, ненадёжность iowaitus,sy,id,wa,st--vmи--container, коды возвратаdirect,iodepth,time_based,ioengine-evp,-seconds,-multitcp_congestion_control,tcp_mtu_probing💬 ВОПРОС К СООБЩЕСТВУ
Какой из замеров у вас чаще прочих ставил на сервере крест? У меня лидирует не steal и не диск, а перекос в
iperf3: наружу летит, внутрь еле ползёт. Любопытно собрать чужие критерии «всё, оформляю возврат» — и услышать, случалось ли, что провайдер по предъявленным цифрам действительно переносил машину на другой хост.TOP HOSTERS: KAMATERA (30 дней бесплатного теста!)
Универсальный хостер №1 - 4VPS.su (2Гб\с сервера) - 10% скидка на первый заказ или 15% бонус на первое пополнение