Questa pagina è stata tradotta automaticamente. Leggi l'originale in inglese. English

Libreria IBSurgeon

Veloce, potente ed economico: un server con prestazioni più che sufficienti per il database di una piccola azienda per meno di 1000 dollari

(c) Alexey Kovyazin, 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, самым критичным ресурсом для базы данных является дисковый ввод-вывод, затем ОЗУ, и только потом - ЦП (интересно, что когда клиенты из СМБ покупают серверы у крупных вендоров, они часто выбирают серверы с мощными процессорами и медленными дисками, вероятно, из-за маркетинговых материалов, которые переоценивают важность ЦП).

Диски

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

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

Например, Samsung 850 Pro 256 ГБ 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 года.

ЦП

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

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

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

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

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

Цена на Amazon - $108

Риски, связанные с настольным ЦП

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

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

ОЗУ

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

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

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

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

Риски, связанные с ОЗУ

ОЗУ более уязвимо к отказам, чем ЦП, но менее, чем диски. Корпоративная ОЗУ имеет специальные механизмы для снижения вероятности ошибок, такие как проверка чётности. Как мы можем оценить и снизить риск отказов памяти?

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

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

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

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

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

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

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

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

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

ИБП

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

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

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

Totale

Di conseguenza, il prezzo totale di tutti i componenti del computer e dell’UPS = USD 855,27 - è anche meno di USD 1000, tuttavia, prima che questi componenti diventino un computer funzionante, devono essere assemblati, dotati di sistema operativo e testati.

Articolo Prezzo Qtà Totale
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
Motherboard ASUS M5A78L-M Plus $57 1 57
Case Desktop $69,99 1 69,99
CyberPower CP1200AVR $119.82 1 119,82
Totale 855,27

Assemblaggio del server

Per assemblare tutte queste parti in un server funzionante e installarvi il sistema operativo (consiglieremmo una distribuzione Linux, come CentOS7+ o Ubuntu Server 16+), tutti questi componenti devono essere assemblati/collegati correttamente.

Non è difficile, richiede solo un cacciavite, un po’ di pazienza e tempo per leggere attentamente le istruzioni e guardare alcuni video su YouTube. 10 anni fa quasi ogni sviluppatore era in grado di assemblare un computer da questi componenti, oggi è diverso, ma non è comunque difficile.

E se non vuoi assemblare il server?

C’è una scorciatoia - è possibile acquistare un computer con una configurazione simile che soddisfa quasi le nostre esigenze, e collegarvi componenti aggiuntivi (ad esempio, dischi).

Consiglierei di dare un’occhiata a questo computer - originariamente progettato come PC da gioco, ha una CPU a 8 core e 16 GB di RAM, e costa solo USD$709.

Sarà necessario equipaggiarlo (aprire il case e collegare) con un paio di unità SSD (+$248,48), un’unità di backup aggiuntiva (+$74,99) e, naturalmente, un UPS (+119.82). Il totale sarà USD 1153 - superiore all’obiettivo di $1000, principalmente a causa della scheda video e del bel case desktop. Dovrai comunque configurare il RAID1 (nel BIOS) e, naturalmente, installare il sistema operativo server al posto del Windows 10 Home preinstallato.

Questo approccio può essere utilizzato per trasformare un potente computer desktop in un server - basta aggiungere SSD ridondanti e unità di backup.

In passato molte PMI e startup hanno utilizzato tali server autocostruiti, ora c’è una tendenza a utilizzare macchine virtuali basate su cloud.

Come si confrontano le macchine virtuali con un server autocostruito?

Naturalmente, costruire e mantenere il proprio server richiede alcune competenze (non così elevate come potrebbe sembrare), quindi molte aziende vogliono liberarsi di tutti i server hardware (e, possibilmente, licenziare l’amministratore di sistema responsabile dei server).

Nel prossimo articolo, considereremo la VM nel cloud come server di database per le PMI.

Altri articoli sulle prestazioni del database Firebird:

  1. Guida hardware Firebird
  2. Ottimizzazione del database Firebird da 1,7 Tb
  3. Servizio di ottimizzazione delle prestazioni Firebird
  4. 45 modi per velocizzare il database Firebird
  5. Raccolta di file di configurazione Firebird ottimizzati

Contattaci

Non esitare a porre qualsiasi domanda: [email protected].

Ringraziamenti

Molte grazie alle persone che hanno inviato suggerimenti e miglioramenti per questo articolo:

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