Выделенный сервер · помесячно

База и кэш
Сначала выберите память

$449 / мес. от · 128GB
Начать аренду
DDR4-3200 ECC SSH / RDP

Основная база и кэш на одном выделенном сервере: 128GB или 256GB?

Тому, кто ведёт базу, перед заказом обычно нужно выбрать память, а не число ядер. У обеих машин один и тот же процессор. Разница — 128GB за $449 в месяц и 256GB за $599. Сложите горячий набор, кэш и запас для системы, затем сопоставьте сумму со ступенью. Цифры ниже — точка старта. После запуска их поправляют по попаданиям в кэш и вытеснениям.

Сначала сложить три потребителя

Обе ступени — AMD EPYC 7543P, 32 ядра / 64 потока, 2,8–3,7 ГГц. 128GB стоит $449 в месяц, 256GB — $599. Память — DDR4-3200 ECC RDIMM. Её выбирают при заказе. Дополнительные планки после этого не ставятся. Решите до оплаты, будут ли основная база и кэш на одной машине. Третьей ступени памяти потом нет.

На одном хосте память делится как минимум на три части. Первая — операционная система, страничный кэш и соединения, включая процессы, с которыми вы заходите по SSH. Вторая — горячие данные, которые база должна держать в памяти: у MySQL это в основном буферный пул InnoDB, у PostgreSQL — shared_buffers плюс страничный кэш, который система оставляет для неё. Третья — Redis или другой кэш под maxmemory. Если приложение тоже работает здесь, вычтите и его резидентную память.

Сложите три части, оставьте запас и сравните с 128 и 256. Размер каталога на диске — это не потребность в памяти. Каталог на 400GB может содержать лишь несколько десятков гигабайт действительно горячих данных. Наоборот, 128GB закончится раньше, если кэш должен держать большую часть набора объектов, даже при небольшом диске.

Проверить до цены

ECC и число ядер на обеих ступенях одинаковые. Лишние $150 в месяц покупают только память. 256GB не добавляет ядер, 128GB не экономит процессор.

Текст про MySQL, PostgreSQL и Redis на Linux. Если выбран Windows Server, лимит памяти SQL Server считайте отдельно. Доли пула ниже не переносите в Windows. На Linux настройки меняют по SSH. Способ входа на обеих ступенях один.

Когда хватает 128GB

128GB хватает, когда несколько условий выполняются вместе. Пул покрывает горячий набор, доля попаданий уже стабильна. Redis держит сессии, горячие ключи или ограниченный кэш объектов, примерно 8–24GB, и вытеснения приемлемы. ОС, соединения и приложение на том же хосте оставляют ещё около 16–24GB. За полгода горячий набор не удвоится, и второй крупный сервис в памяти сюда не переезжает.

Это расчёт, а не обещание ёмкости. На 128GB сначала оставьте около 20GB системе и соединениям. Если Redis планируется на 16GB, базе остаётся около 90GB. Пул MySQL можно начать с 64–80GB, с местом для страничного кэша и сортировок на диске. Если Redis — лишь несколько гигабайт, пул можно приблизить к 80GB. Если Redis уже требует 24GB, пул выше 80GB не поднимайте.

PostgreSQL обычно ставит shared_buffers ниже пула MySQL, часто около четверти физической памяти. Остальное остаётся страничному кэшу ОС. Тот же горячий набор тогда может остаться на 128GB, если параллельные сортировки и хеш-агрегации не раздувают work_mem в большой пик. В одном запросе бывает несколько узлов сортировки, затем это умножают на число одновременных запросов. 64MB на несколько десятков параллельных операций обычно ещё помещаются. Сотни мегабайт work_mem на сотню одновременных операций съедают запас 128GB.

$449128GB в месяц
$599256GB в месяц
$150Разница в месяц
32 ядраОдин и тот же CPU

Когда выбирать 256GB

Достаточно одного из пунктов. Нужен пул около 80GB и одновременно Redis на несколько десятков гигабайт. На текущей машине RSS базы плюс RSS кэша уже около или выше 90GB. В PostgreSQL много параллельных сортировок, и work_mem, умноженный на эту параллельность, заполняет запас. Кроме основной базы и Redis на том же хосте должен жить поиск или другой сервис с большой кучей. Приложение не вынесено и само требует больше 10GB.

На 256GB сначала оставьте 24–32GB системе и соединениям. Если Redis нужен на 32–48GB, пул всё ещё может стоять на 120–160GB. Это старт. После запуска верхние границы возвращают по попаданиям, временным файлам и вытеснениям Redis. Не отдавайте около 90 процентов памяти пулу и не запускайте рядом большой Redis. Когда растут оба, хост уходит в swap. Это труднее читать, чем промах кэша, ушедший на диск.

Разница — $150 в месяц. Квартал: $1,347 против $1,797. Полгода: $2,694 против $3,594. Год: $5,388 против $7,188. Срок только умножает месячную сумму. Выбор 256GB скидку не добавляет. Перенос базы из-за нехватки памяти обычно дороже этих $150. Если текущее потребление уже у линии 128GB, заказывайте 256GB. Если горячий набор собран, попадания высоки, а кэш всё ещё 8–24GB, оставайтесь на 128GB.

Сверить ступень со своими цифрами

Впишите измерения с продакшена или с предыдущего хоста. Любая строка в правом столбце значит: планировать 256GB. Если все пять строк слева, 128GB закрывает этот заказ.

Что можно измеритьБлиже к 128GBБлиже к 256GB
Горячий наборПул его покрывает, попадания стабильныСами горячие данные около или выше 100GB
Redis / кэш8–24GB горячих ключей или сессийЕщё десятки GB, и пул тоже большой
Соединения и сортировкиЧисло соединений ограничено, сортировки редко уходят на дискwork_mem × параллельность заполняет запас
Кто ещё на хостеВ основном база и этот кэшЕщё приложение, поиск или второй сервис в памяти
Следующие полгодаГорячий набор не удвоитсяТекущее потребление уже около 90GB

Высокие попадания, приемлемые вытеснения и собранный горячий набор остаются на 128GB. Если диск заменяет память или Redis выбрасывает ещё нужные ключи, выбирайте 256GB. Если цифры размыты, возьмите резидентную память предыдущего хоста, умножьте на 1,3 и сравните со 128 и 256. Ниже примерно 100GB этот план держит 128GB. Выше — заказывайте 256GB.

После установки зафиксировать оба потолка

Когда ступень выбрана, запишите потолки базы и кэша в конфигурацию. Без потолков InnoDB и Redis идут по своим значениям по умолчанию и спорят за одну и ту же память.

  1. 1
    Записать три числа

    RSS базы, used_memory Redis и память, которая ещё свободна у ОС. У MySQL — попадания пула, у Redis — used_memory и evicted_keys, у PostgreSQL — попадания кэша и временные файлы.

  2. 2
    Ограничить пул и maxmemory отдельно

    На общем хосте держите пул InnoDB примерно в 60–70 процентах памяти, если только Redis не мал. Задайте Redis maxmemory и политику вытеснения. Оба потолка должны существовать сразу.

  3. 3
    Оставить зазор страничному кэшу

    Сумма пула и потолка Redis должна быть ниже памяти за вычетом ОС и соединений. На 128GB сумму сначала пробуйте около 100GB. На 256GB — около 210GB.

  4. 4
    Посмотреть ещё раз через неделю

    Если swap продолжает расти, потолки завышены. Сначала уменьшите пул или Redis, затем смотрите попадания. Чтение с диска само по себе не доказывает, что ступень памяти выбрана неверно.

Не заполнять обе стороны

Пул выше примерно 80 процентов памяти плюс большой Redis уводит хост в swap. Сложите два потолка, убедитесь, что они помещаются, и только потом перезапускайте службы.

Дополнительный диск не добавляет память

Диски по умолчанию — 2 × 1TB NVMe, без аппаратного RAID. Каждый диск подключён напрямую, доступный объём — 2TB. Если горячий набор не помещается в память, чтения уходят на эти диски. NVMe принимает промахи. Задержка всё равно выше, чем попадание в память. Дополнительный диск 2TB стоит $79 в месяц, не больше двух, тоже напрямую. Это ёмкость, а не планка памяти. Куда класть файлы данных и резервные копии — вопрос дисков. «Ещё один диск» не заменяет ступень 256GB.

Канал тоже не наполняет буферный пул. По умолчанию 250M, трафик без лимита. 1G добавляет $250 в месяц, 2G — $750. Меняется скорость исходящего канала. Обмен между базой и локальным Redis идёт через loopback и этот канал не занимает. Память и канал — разные строки. Если копии нужно вывозить с машины, смотрите, хватает ли 250M на эту передачу. Это другой выбор.

Диски — в другой заметке

После выбора памяти решите, как два прямых диска держат данные. Это не аппаратный RAID. См. заметку про два диска.

Как это ложится на две машины

Когда горячий набор, кэш и запас сложены, в форме заказа две машины. 128GB — $449 в месяц, 256GB — $599. Процессор на обеих — EPYC 7543P, 32 ядра / 64 потока, 2,8–3,7 ГГц. Память — DDR4-3200 ECC RDIMM, выбирается при заказе, без планок потом. Серверы стоят в Токио, Япония. На Linux заходят по SSH и правят пул и maxmemory. Платы за установку нет. К оплате — месячная сумма, умноженная на число месяцев. Месяц, квартал, полгода и год дополнительной скидки не дают. Опции этого хоста, включая диски и канал, предоплачиваются на тот же срок.

Если сумма уже больше того, что 256GB держит с запасом — большой пул, большой кэш, куча поиска и приложение вместе — не запихивайте всё на один 256GB. Вынесите кэш или поиск на вторую машину. Так яснее, чем писать каждый потолок в самый верх. Этот текст выбирает только между двумя ступенями, которые можно заказать.

Выделенный сервер · помесячно

Сначала память, потом база и кэш

128GB — $449 в месяц, 256GB — $599. Память выбирают при заказе. Серверы в Токио, Япония. Заказать можно до входа в аккаунт.

$449/ мес. от
CPUEPYC 7543P
Ядра32 / 64 потока
RAM128 / 256GB ECC
Диски2×1TB напрямую
ПлощадкаТокио, Япония
УстановкаНет