Эта страница переведена машинным переводом. Читайте английский оригинал. English

Библиотека IBSurgeon

Быстро, яростно и дёшево: сервер с достаточной производительностью для базы данных малого бизнеса менее чем за 1000 долларов США

(c) Алексей Ковязин, IBSurgeon, 21 сентября 2017 (последнее обновление - 29 сентября 2017)

Получить мощный сервер легко, если вы готовы потратить много $$$: есть ведущие вендоры, такие как Dell, HP, и множество менее известных аппаратных компаний, они с радостью продадут вам мощную машину (обычно с доставкой через 4-6 недель).

Однако деньги всегда являются проблемой, особенно для малого бизнеса и стартапов, поэтому существует большой спрос на «достаточно хорошие» дешёвые решения. Эта статья описывает практический подход к созданию «достаточно хорошего» сервера баз данных с достаточной производительностью для малого бизнеса. Она также содержит расчёты и ссылки на конкретные продукты, которые мы рекомендуем.

Наша компания (IBSurgeon) предоставляет консультационные услуги и услуги по обслуживанию баз данных Firebird, и мы видим множество типов серверов (или, лучше сказать, компьютеров, используемых в качестве серверов). Крупные заказчики используют высококлассные конфигурации с SAN на базе SSD, 350+ ГБ ОЗУ и двумя топовыми Xeon на борту, но малые и средние предприятия используют менее мощные машины, поскольку им не нужно много вычислительной мощности и у них нет много денег.

Мы заметили, что многие серверы на самом деле являются обычными рабочими станциями, и, что самое интересное, они работают довольно стабильно годами. Есть действительно экзотические вещи, например, Windows XP на компьютере с 2 ГБ ОЗУ (компьютер собран в 2002 году!), но большинство из них - это просто «достаточно хорошие» самостоятельно собранные аппаратные решения.

Конечно, это вопрос статистики, и никто не порекомендует использовать рабочую станцию в качестве сервера, но вопрос в том: где баланс между стабильностью и расходами? Является ли хорошим подходом использование дешёвого самостоятельно собранного сервера с точки зрения соотношения цены и качества? Что мы можем получить за 1000 долларов США? Какие риски связаны с недорогим оборудованием?

Кому может быть интересен сервер баз данных дешевле 1000 долларов США?

Рассмотрим следующую ситуацию: офис с 20-25 сотрудниками, люди работают 7x5, размер базы данных около 50 ГБ. Это типичная ситуация для компании малого бизнеса, которая использует какую-либо ERP, CRM или специфическое приложение (например, систему автоматизации стоматологической клиники) для приложений малого бизнеса на основе Firebird.

Представим, что компания не завалена деньгами и хочет экономить как можно больше, не теряя надёжности, чтобы достичь достаточно хорошей производительности. Ответственный человек в компании понимает, что всё оборудование рано или поздно выйдет из строя, и хочет снизить связанные риски.

Какой сервер им нужен для базы данных Firebird такого размера и нагрузки? Согласно Руководству по оборудованию для Firebird, самым критичным ресурсом для базы данных является дисковый ввод-вывод, затем ОЗУ, и только потом - CPU (интересно, что когда клиенты из СМБ покупают серверы у крупных вендоров, они часто выбирают серверы с мощными процессорами и медленными дисками, вероятно, из-за маркетинговых материалов, которые переоценивают важность CPU).

Диски

Быстрый ввод-вывод означает, что нам нужны твердотельные накопители (SSD), поскольку SSD - король случайных чтений и записей. Конечно, SSD не является панацеей для баз данных, но он обеспечивает действительно высокую производительность, и сейчас это правильный выбор для баз данных.

SSD бывают двух видов - корпоративного и потребительского класса. Ключевое различие между ними - ресурс, примерно рассчитываемый как количество операций ввода-вывода, которые они могут выполнить.

Например, Samsung 850 Pro 256 Gb MZ-7KE256BW - SSD потребительского класса (на основе технологии MLC), у него TBW (общее количество записанных байт) 150 петабайт, и DWPD (записей на диск в день) = 0,16. Или, проще, ресурс можно объяснить как 40 ГБ записей каждый день в течение 10 лет.

Обновление: нам поступило предложение, что Samsung PM863a ($181.59) или SM863a ($249) более надёжны, чем 850 Pro, но всё ещё доступны - по сути, за дополнительные $60 мы можем получить лучшую стабильность и некоторую защиту от скачков напряжения.

Много это или нет? У нас есть тестовый сервер с SSD потребительского класса, где мы запускаем нагрузочные тесты для имитации интенсивной работы 100 подключений при базе данных 60 ГБ. Каждый день запускаются 3 таких теста по 3 часа каждый - это означает, что эти тесты имитируют 9-часовой рабочий день. Тесты уже идут 2 года, и оставшийся ресурс (согласно прошивке) составляет 54%.

Конечно, ~50% ресурса означает, что диск следует заменить в течение следующего года… Так ли это плохо? Каждые несколько лет скорость SSD увеличивается, а цены падают: SSD в примере имеет 6 ГБ/с и стоит $137, через 2-3 года будут диски на 12G по той же цене.

Цена на Amazon от $124

SSD корпоративного класса построены на основе другой технологии (SLC) и могут выполнять примерно в 30 раз больше операций, чем SSD потребительского класса того же размера. Кроме того, они стоят примерно в 3 раза дороже, чем SSD потребительского класса. Вопрос: действительно ли нам нужно в 30 раз больше циклов ввода-вывода для сервера малого бизнеса за тройную цену?

Если мы ищем быстрое и доступное решение, очень привлекательно использовать дешёвые SSD потребительского класса и заменять их на регулярной основе (и, конечно, контролировать их ресурс с помощью прошивки).

Риски, связанные с SSD

Как адекватные люди, мы понимаем, что оборудование потребительского класса имеет меньший ресурс и высокие шансы на отказ, поэтому нам нужно снизить эти шансы. Как это сделать?

Чтобы уменьшить вероятность внезапного отказа оборудования, необходимо использовать 2 SSD для базы данных, объединённых в RAID1. RAID1 не означает, что нам нужен отдельный RAID-контроллер; будет достаточно использовать возможности RAID современных чипсетов материнских плат - по сути, это простой RAID-контроллер без кэша.

Обновление: поскольку дешёвые RAID-контроллеры на материнских платах могут не поддерживать функцию TRIM для SSD, чтобы избежать деградации производительности, рекомендуется настроить программный RAID, который координирует одновременные операции на программном уровне.

Если не будет кэша, какой будет производительность? Современные SSD, такие как Samsung в примере, имеют встроенный кэш и очень умные контроллеры - поэтому они достаточно быстры без выделенных RAID-контроллеров.

Конечно, необходимо проверять здоровье дисков; обычно прошивка даёт достаточно хорошую оценку срока службы дисков.

Резервное копирование

Конечно, нам нужны диски для резервных копий. Лучшим выбором будет пара SATA-дисков по 2 ТБ каждый - например, Seagate SkyHawk 2TB Surveillance Hard Drive, с 5900 об/мин.

Цена на Amazon - $74,99

Нам нужны 2 HDD, потому что диски для резервного копирования также должны быть помещены в RAID1, чтобы обеспечить защиту от внезапного отказа оборудования. Эти диски для резервного копирования могут быть довольно медленными; их основная цель - хранить резервные копии и обеспечивать адекватную скорость последовательного чтения/записи. Диски на 5900 об/мин медленнее, чем на 7200 об/мин, но они известны как более надёжные. Эта конкретная серия дисков (Seagate SkyHawk) предназначена для линейной записи: это то, что нам нужно для резервных копий.

Риски для дисков резервного копирования

Риск тот же, что и для SSD, и мы защищаемся от него так же: RAID1 и мониторинг. Должно быть мало шансов, что оба диска в RAID1 выйдут из строя одновременно.

Системный диск

Нужен ли нам отдельный диск для операционной системы? В самой дешёвой конфигурации - нет, будет достаточно держать ОС и базу данных на одном диске. Это немного ускорит деградацию SSD, но не сильно - в нашем сценарии он точно должен прослужить 3 года.

CPU

Для сервера базы данных Firebird лучше выбрать CPU с большим количеством ядер и как можно более низкой частотой. Да, вы прочитали правильно - нет необходимости в высокочастотных процессорах для сервера баз данных. Firebird (если он правильно настроен) использует все ядра для нормальной работы, но не загружает их на 100%.

Есть исключения: некоторые операции обслуживания (резервное копирование и восстановление), которые выигрывают от высокоскоростного CPU, и плохо написанные SQL-запросы с неправильным использованием индексов - они потребляют 100% ядра, но это явный признак того, что требуется оптимизация производительности базы данных. В целом, невозможно компенсировать медленные запросы высококлассными процессорами: даже если CPU в 3 раза быстрее, медленный запрос всё равно останется медленным.

С другой стороны, наличие нескольких ядер может компенсировать существование таких требовательных к CPU запросов: при количестве пользователей до 25 и с 8 ядрами вероятность того, что все ядра будут одновременно заняты медленными запросами, не так велика.

И, поскольку мы ищем дешёвое решение, мы ограничены настольными процессорами - и, к сожалению, чипами AMD. По сути, если бы Intel могла предложить настольный процессор с 8 ядрами по той же цене или чуть дороже, чем AMD FX-8320E, мы могли бы использовать и Intel, но на данный момент я не вижу такого варианта.

Этот чип AMD не такой современный и не такой быстрый, но у него 8 ядер, и он дешёвый, так что это оптимальный выбор для нашего быстрого и недорогого сервера.

Цена на Amazon - USD$108

Риски, связанные с настольным процессором

Каков потенциальный риск, связанный с процессором? Для низкочастотных (т.е. не разогнанных) чипов с адекватным кулером риск практически отсутствует. Когда вы в последний раз слышали о выходе из строя настольного процессора - в 2003 году? Конечно, серверные процессоры намного быстрее, но мы ищем достаточно хорошее решение.

Хорошая идея - контролировать нагрузку на CPU и температуру, чтобы предотвратить случайные перезагрузки.

Оперативная память

Объём необходимой оперативной памяти зависит от размера базы данных и количества пользователей. В нашем сценарии размер базы данных составляет 50 ГБ, и у нас максимум 30 пользователей.

Максимальный объём, который может потреблять Firebird, - это размер базы данных (в этом случае она будет полностью кэширована в RAM) плюс 200-300 МБ на пользователя (в случае Firebird 2.5 SuperClassic). Таким образом, идеальный максимальный объём RAM - 64 ГБ, но поскольку мы хотим сэкономить и у нас быстрый SSD, мы можем обойтись всего 16 ГБ.

Некоторые пользователи в таком сценарии нормально работают даже с 8 ГБ, но 8 ГБ - это довольно тесно: в этом случае на том же сервере не следует запускать никакие другие приложения. 16 ГБ - рекомендуемый минимальный оптимум.

Цена на Amazon - USD$59.99 x 2 = $120

Риски, связанные с оперативной памятью

RAM более уязвима к сбоям, чем процессоры, но менее, чем диски. Серверная память корпоративного класса имеет специальные механизмы для снижения вероятности ошибок, например, проверки чётности. Как мы можем оценить и снизить риск сбоев памяти?

Во-первых, существуют методы проверки чипов памяти, и если такие тесты успешно пройдены, чипы RAM прослужат много лет. Во-вторых, когда RAM выходит из строя, это обычно очень заметно: компьютер либо показывает синий экран смерти или kernel panic, либо часто перезагружается: все такие симптомы требуют проверки и, в случае плохих результатов, замены RAM.

Материнская плата

Материнская плата - важная часть любого компьютера. К счастью, современные материнские платы для настольных ПК очень надёжны, особенно платы, выпущенные 4-5 лет назад, - они имеют все необходимые обновления и стабильны. И - да, они дешёвые.

Нам нужна материнская плата с поддержкой RAID, со встроенным видеопроцессором и достаточным количеством разъёмов SATA. Что-то вроде этой:

ASUS M5A78L-M Plus/USB3 DDR3 HDMI DVI USB 3.0 760G MicroATX Motherboard

Цена на Amazon - USD$74,99

У неё очень положительные отзывы, и она легко настраивается на RAID1.

Корпус для настольного ПК

Нам нужен корпус, чтобы собрать все компоненты компьютера вместе, с достаточным блоком питания. Что-то вроде этого: $76,82 http://amzn.to/2ydeYs1

ИБП

Единственное, что не является частью сервера, но должно быть у каждого компьютера с важными данными внутри, - это источник бесперебойного питания (ИБП).

ИБП защищает компьютер от перебоев питания и скачков напряжения. По нашему опыту, скачок напряжения или аварийное отключение питания компьютера - главная причина повреждения баз данных.

Что-то вроде CyberPower CP1200AVR за $117.97 должно быть достаточно хорошим.

Итого

В результате мы получаем общую стоимость всех компонентов компьютера и ИБП = USD 855,27 - это даже меньше USD1000, однако, прежде чем эти компоненты станут рабочим компьютером, их нужно собрать, установить ОС и протестировать.

Компонент Цена Кол-во Итого
SSD Samsung 850 Pro 256 Gb MZ-7KE256BW $124,24 2 248,48
Seagate SkyHawk 2TB Surveillance Hard Drive 74,99 2 149,98
CPU AMD FX-8320E $86,02 1 86,02
RAM Corsair Vengeance 8GB $61,99 2 123,98
Материнская плата ASUS M5A78L-M Plus $57 1 57
Корпус для настольного ПК $69,99 1 69,99
CyberPower CP1200AVR $119.82 1 119,82
Итого 855,27

Сборка сервера

Чтобы собрать все эти детали в рабочий сервер и установить туда операционную систему (мы бы рекомендовали какой-нибудь вариант Linux, например CentOS7+ или Ubuntu Server 16+), все эти компоненты должны быть собраны/правильно подключены.

Это несложно, требуется лишь отвёртка, немного терпения и время, чтобы внимательно прочитать инструкции и посмотреть несколько видео на YouTube. 10 лет назад почти каждый разработчик мог собрать компьютер из этих деталей, сейчас всё по-другому, но всё равно несложно.

Что если вы не хотите собирать сервер?

Есть короткий путь - можно купить компьютер с похожей конфигурацией, которая почти соответствует нашим потребностям, и подключить туда дополнительные компоненты (например, диски).

Я бы рекомендовал обратить внимание на этот компьютер - изначально разработанный как игровой ПК, он имеет 8-ядерный CPU и 16 ГБ RAM и стоит всего USD$709.

Потребуется оснастить его (открыть корпус и подключить) парой SSD-дисков (+$248,48), ещё одним резервным диском (+$74,99) и, конечно, ИБП (+119.82). Итого будет USD 1153 - это выше цели в $1000, в основном из-за видеокарты и хорошего корпуса. Вам всё равно нужно настроить RAID1 (в BIOS) и, конечно, установить серверную ОС вместо предустановленной Windows 10 Home.

Этот подход можно использовать, чтобы превратить мощный настольный компьютер в сервер - просто добавьте туда избыточные SSD и резервные диски.

В прошлом многие малые и средние предприятия и стартапы использовали такие самостоятельно собранные серверы, сейчас есть тенденция использовать облачные виртуальные машины.

Как виртуальные машины соотносятся с самостоятельно собранным сервером?

Конечно, создание и обслуживание собственного сервера требует некоторых навыков (не таких высоких, как может показаться), поэтому многие компании хотят избавиться от всех аппаратных серверов (и, возможно, уволить системного администратора, отвечающего за серверы).

В следующей статье мы рассмотрим виртуальную машину в облаке как сервер базы данных для малого и среднего бизнеса.

Другие статьи о производительности баз данных Firebird:

  1. Руководство по аппаратному обеспечению Firebird
  2. Настройка базы данных Firebird объёмом 1.7 ТБ
  3. Сервис оптимизации производительности Firebird
  4. 45 способов ускорить базу данных Firebird
  5. Коллекция оптимизированных конфигурационных файлов Firebird

Свяжитесь с нами

Пожалуйста, не стесняйтесь задавать любые вопросы: [email protected].

Благодарности

Большое спасибо людям, которые прислали предложения и улучшения для этой статьи:

  • Vlad Khorsun
  • Dmitri Kuzmenko
  • Pavel Zotov
  • Sergey Nikitin
  • Emil Mustea