Как выбрать VPS: 7 параметров, которые важнее цены
У двух серверов в карточке провайдера одинаковые цифры: 2 ядра, 4 ГБ памяти, 40 ГБ на диске. Первый спокойно держит сайт с базой. На втором страницы то открываются за долю секунды, то думают по три, потому что ядра на деле общие с десятком соседей, а диск упирается в лимит операций. Ниже разобрано, что смотреть в условиях до оплаты, о чём спросить поддержку и какими командами проверить сервер в первый час, пока от него ещё легко отказаться.
Что такое VPS, если коротко
VPS (virtual private server, у российских провайдеров чаще VDS) называют виртуальную машину на чужом физическом сервере. У вас свой IP-адрес, root-доступ и своя операционная система, в которую можно ставить что угодно. Само железо вы делите с другими клиентами провайдера, его режет на части программа-гипервизор.
С виртуальным хостингом VPS расходится в свободе. На хостинге вам дают папку под сайт и панель, а версию PHP и набор модулей выбирает провайдер. С выделенным сервером расходится в том, что машина не ваша целиком: она дешевле и появляется за пару минут, зато скорость зависит от соседей и от того, сколько клиентов посадили на один хост.
Поэтому цифры в карточке задают потолок. Сколько из него вы получите, зависит от провайдера, и почти всё это можно проверить самому.
Сначала задача, потом сервер
Прежде чем сравнивать предложения, запишите, что будет крутиться на машине. От задачи зависит, какой из семи параметров для вас главный.
- Сайт на WordPress или другом движке с базой. Важны память и диск: база постоянно читает мелкие блоки вразброс.
- Несколько сервисов в Docker. Тут решают память и тип виртуализации: для Docker нужна полноценная виртуальная машина со своим ядром.
- Файловое облако, медиатека, хранилище копий других машин. Нужны объём диска и квота трафика.
- Бот, парсер, мониторинг. Ресурсов нужно мало, зато важны стабильная сеть и аптайм.
- 1С и всё, что работает на Windows. Здесь смотрят на память, на лицензию Windows (в счёте она идёт отдельной строкой) и на страну ЦОД, если в базе есть персональные данные.
Прикиньте минимум на сейчас и на полгода вперёд: ядра, память, место. Конфигурацию обычно можно поднять позже без переустановки системы, хватит перезагрузки. Уменьшить диск многие провайдеры не дают, поэтому с ним разумно начинать с меньшего и расширять, когда понадобится.
7 параметров и как их проверить
Сначала сводная таблица, подробности по каждому пункту идут после неё. Команды рассчитаны на Debian и Ubuntu, на других дистрибутивах они те же, меняется только менеджер пакетов.
| Параметр | Что выяснить до оплаты | Чем проверить на сервере | Тревожный знак |
|---|---|---|---|
| 1. Процессор | Выделенные или общие ядра, модель CPU | nproc, lscpu, vmstat 1 10 | Steal time не ноль в спокойные часы |
| 2. Память | Объём, закреплена ли она за машиной, есть ли swap | free -h, swapon --show | Доступно заметно меньше заявленного |
| 3. Диск | NVMe, SSD или HDD, лимит IOPS | df -h, тест fio | Случайное чтение на уровне жёсткого диска |
| 4. Виртуализация | KVM или контейнер (OpenVZ, LXC) | systemd-detect-virt | Контейнер, когда нужен Docker или своё ядро |
| 5. Сеть и ЦОД | Город, скорость порта, квота трафика, IPv4 и IPv6, открыт ли 25-й порт | ping, mtr, ip -br addr | Потери пакетов на конечном адресе |
| 6. Бэкапы | Есть ли автокопии, где лежат, как восстановить | Сделать снапшот и откатиться на нём | Копии в том же хранилище, что и сервер |
| 7. Поддержка и аварийный доступ | Консоль в браузере, rescue, свой ISO, SLA | Технический вопрос в тикет | Ответ шаблоном или через сутки |
1. Процессор: сколько ядер достанется на деле
vCPU в карточке означает поток физического процессора, который гипервизор отдаёт вашей машине по очереди с другими. Если провайдер раздал на хосте больше виртуальных ядер, чем там есть физических (это называют оверселлингом), в часы нагрузки машина ждёт своей очереди. Изнутри сервера это видно как steal time: доля времени, когда ядро было нужно вам, а гипервизор отдал его соседу.
nproc
lscpu | grep -E 'Model name|^CPU\(s\)|Hypervisor'
vmstat 1 10
Последний столбец st у vmstat и поле st в строке %Cpu(s) у top показывают steal в процентах. Без нагрузки там должен быть ноль или почти ноль. Если цифра держится и в тихое время, свободных ядер на этом хосте нет, а под нагрузкой станет хуже. Смотрите несколько раз за сутки: вечером соседи активнее, чем утром.
Выделенные ядра (dedicated CPU) обычно стоят дороже общих. Сайту-визитке хватит и общих, а вот на базе данных или сборке проектов разница видна сразу.
2. Память: что останется после системы
Оперативная память у виртуальной машины обычно закреплена за ней. В контейнерах бывает иначе: часть провайдеров показывает «гибкий» объём, который доступен, пока он свободен на хосте. Чистая Debian или Ubuntu без сервисов занимает немного, но база, PHP-FPM и пара контейнеров Docker быстро забирают гигабайт-другой.
free -h
swapon --show
Смотрите на столбец available: столько получит новый процесс. Если swap нет, а памяти впритык, на пике ядро начнёт завершать процессы (OOM killer), и чаще всего первой падает база. Swap-файл можно сделать за минуту, но на медленном диске он только прячет нехватку памяти.
Память поднимают чаще всего остального. Если колеблетесь между двумя конфигурациями, берите ту, где её больше, а процессор подбирайте по задаче.
3. Диск: тип, объём и лимит операций
Слово NVMe в карточке относится к хранилищу хоста, а не к вашей доле в нём. Провайдеры ограничивают число операций ввода-вывода в секунду (IOPS) на каждую машину, и на младших конфигурациях этот потолок бывает низким. Для сайта с базой он значит больше объёма: база читает и пишет маленькими кусками в разные места диска.
Случайное чтение блоками по 4 КБ проверяет утилита fio. Тест создаёт файл на 1 ГБ, после проверки его нужно удалить:
apt install fio
fio --name=rand4k --filename=/root/fio.test --size=1G --rw=randread --bs=4k \
--direct=1 --ioengine=libaio --iodepth=32 --runtime=30 --time_based
rm /root/fio.test
В выводе ищите строку read: IOPS=. У жёсткого диска счёт идёт на сотни операций в секунду, у SSD на тысячи и десятки тысяч. Если «NVMe» выдаёт цифры уровня HDD, на машине жёсткий лимит. Спросите поддержку о нём до того, как переносить проект.
Свободное место показывает df -h. Команда lsblk тоже покажет диски, но поле ROTA внутри виртуальной машины часто ничего не говорит о реальном типе носителя, так что верить лучше fio.
4. Виртуализация: KVM или контейнер
Под словом VPS продают два разных устройства. KVM, а также VMware, Hyper-V и Xen дают полноценную виртуальную машину со своим ядром: можно поставить любую систему, загрузить модуль ядра, запустить Docker, тонко настроить сеть. OpenVZ и LXC устроены как контейнеры: ядро у них общее с хостом, его версию и модули выбирает провайдер. Контейнеры легче и обычно дешевле, но Docker, свои правила nftables и часть сетевых настроек в них могут не заработать или потребуют помощи поддержки.
systemd-detect-virt
Команда печатает kvm, microsoft, vmware или xen для виртуальных машин и openvz или lxc для контейнеров. Если тип виртуализации в условиях не указан, задайте этот вопрос поддержке до оплаты.
5. Сеть и расположение ЦОД
Город дата-центра задаёт нижнюю границу задержки. Свет в оптоволокне проходит около 200 тысяч километров в секунду, поэтому каждые 100 км расстояния добавляют примерно 1 мс к пингу туда и обратно. Это физический минимум: кабель прокладывают в обход, и каждый маршрутизатор на пути добавляет своё. В таблице посчитано расстояние по прямой и минимальный пинг. Цифры расчётные, реальный пинг будет выше.
| Откуда | До Москвы | До Франкфурта |
|---|---|---|
| Москва | на месте | ≈ 2 020 км, от 20 мс |
| Краснодар | ≈ 1 200 км, от 12 мс | ≈ 2 320 км, от 23 мс |
| Екатеринбург | ≈ 1 420 км, от 14 мс | ≈ 3 430 км, от 34 мс |
| Новосибирск | ≈ 2 810 км, от 28 мс | ≈ 4 810 км, от 48 мс |
| Владивосток | ≈ 6 420 км, от 64 мс | ≈ 8 280 км, от 83 мс |
Для сайта разница в 20 или 30 мс почти незаметна, браузер всё равно тратит больше на загрузку картинок и скриптов. Для удалённого рабочего стола, терминала по SSH и всего, что отвечает на каждое нажатие клавиши, её чувствуешь.
Кроме города, в условиях сети ищите четыре вещи:
- Скорость порта и полосу. «1 Гбит/с» в карточке часто означает скорость порта, а не полосу, которую вам обещают в любой момент.
- Квоту трафика в месяц и что будет после неё: снижение скорости или доплата за каждый гигабайт.
- IPv4. Свободных адресов мало, и часть провайдеров выставляет IPv4 отдельной строкой или даёт машины только с IPv6. Что выдали, покажет
ip -br addr. - Исходящий 25-й порт. Многие провайдеры закрывают его по умолчанию, чтобы с их сетей не рассылали спам. Если на сервере будет почта, спросите о нём заранее.
Отдельно о стране. Если сайт собирает персональные данные граждан России (например, через форму регистрации), часть 5 статьи 18 закона № 152-ФЗ требует записывать и хранить их в базах на территории России (текст закона). Учтите это до выбора площадки, детали обсудите с юристом.
Задержку и потери проверяют с той стороны, где будут ваши пользователи. Запустите со своего компьютера или попросите знакомых из нужного города:
ping -c 20 <адрес сервера>
mtr -rwc 50 <адрес сервера>
В отчёте mtr смотрите на столбец Loss% у последней строки. Потери на промежуточных узлах часто означают лишь то, что маршрутизатор отвечает на проверочные пакеты в последнюю очередь. Потери на конечном адресе уже говорят о проблеме.
6. Бэкапы: снапшот ещё не копия
Снапшот фиксирует состояние диска на определённый момент и обычно лежит в той же системе хранения, что и сервер. Он выручит после неудачного обновления, но пропадёт вместе с сервером, если сломается само хранилище или аккаунт закроют. Резервная копия хранится в другом месте, и из неё можно подняться, даже если исходного сервера уже нет.
Что выяснить у провайдера:
- делаются ли автоматические копии, как часто и сколько их хранят;
- где они лежат физически;
- входят ли они в стоимость или подключаются отдельно;
- можно ли достать один файл или восстанавливается только машина целиком.
Правило 3-2-1 работает и для VPS: три копии данных, на двух разных носителях, одна из них вне площадки. Небольшому проекту хватит ежедневного дампа базы и файлов в объектное хранилище у другого провайдера. И хотя бы раз поднимите сервер из копии на тестовой машине: пока вы этого не сделали, вы не знаете, рабочий ли у вас бэкап.
7. Поддержка, консоль и SLA
Однажды сервер перестанет отвечать по SSH: хватит ошибки в правилах файрвола или диска, забитого логами. Тогда выручают три вещи в панели провайдера:
- консоль в браузере (VNC или серийная), через неё входят как с подключённого монитора, сеть для этого не нужна;
- режим восстановления (rescue): загрузка с отдельной системы, чтобы смонтировать свой диск и поправить конфиг;
- переустановка системы и загрузка своего ISO, если стандартных образов мало.
Поддержку проверяют до переноса проекта. Задайте технический вопрос (какая виртуализация, есть ли лимит IOPS, открыт ли 25-й порт) и посмотрите, сколько ждать и отвечает ли живой инженер по существу.
Цифры SLA легко пересчитать в минуты. 99,9 % доступности за 30-дневный месяц оставляют до 43 минут простоя, 99,95 % дают около 22 минут, у 99,99 % остаётся примерно 4 минуты. Как правило, SLA описывает компенсацию за превышение, обычно зачислением на баланс, а не обещание, что сервер не упадёт. Часто компенсацию нужно запросить самому.
Первый час на новом сервере
У многих провайдеров есть почасовая оплата или пробный период. Используйте его, чтобы прогнать проверки по порядку, пока проекта на машине ещё нет:
- Система и ресурсы:
systemd-detect-virt,nproc,free -h,df -h. Сверьте с карточкой. - Процессор:
vmstat 1 10, вечером повторите. - Диск: тест fio на 30 секунд, тестовый файл удалите.
- Сеть:
pingиmtrс вашей стороны и со стороны пользователей. - Бэкап: сделайте снапшот, поменяйте любой файл, откатитесь и убедитесь, что файл вернулся.
- Поддержка: вопрос в тикет, засеките время ответа.
Если на каком-то шаге результат расходится с описанием, у вас ещё есть время сменить площадку без переезда.
Что не видно в стоимости из карточки
Две конфигурации с одинаковой суммой в месяц часто расходятся, когда к ней добавляются дополнительные строки. Перед сравнением выпишите, что у каждого провайдера оплачивается отдельно:
- IPv4-адрес, особенно второй и следующие;
- автоматические бэкапы и место под снапшоты;
- трафик сверх квоты;
- лицензия Windows и панели управления сайтами;
- защита от DDoS, если базовой не хватает;
- выделенные ядра вместо общих.
Сложите эти строки для своей задачи, и сравнение станет честным. Дешёвая машина, к которой пришлось добавить адрес, копии и ядра, нередко выходит дороже той, где всё это уже было.
Частые вопросы
Чем VPS отличается от VDS?
На практике ничем: оба названия означают виртуальный сервер с root-доступом и своей системой. Иногда VDS называют машины на KVM, а VPS называют контейнеры, но единого правила на рынке нет. Тип виртуализации проверяют командой systemd-detect-virt или спрашивают у провайдера.
Чем снапшот отличается от резервной копии?
Снапшот фиксирует состояние диска и обычно лежит в той же системе хранения, что и сервер. Он выручит после неудачного обновления, но не после сбоя хранилища. Резервная копия хранится в другом месте и восстанавливается, даже если исходного сервера уже нет. Нужны оба.
Как понять, что соседи по хосту отнимают процессор?
Посмотрите steal time: столбец st в выводе vmstat 1 10 или поле st в строке %Cpu(s) у top. Если без нагрузки там стабильно не ноль, физических ядер на хосте не хватает, и в часы пик сервер будет отвечать медленнее.
Где держать сервер, если пользователи в России?
Если сайт собирает персональные данные граждан России, закон требует записывать и хранить их в базах на территории страны, поэтому такой проект держат в российском ЦОД. Европейская площадка, например во Франкфурте, добавляет к пингу из Москвы не меньше 20 мс по физике оптоволокна и подходит проектам с международной аудиторией или без персональных данных.