Pull to refresh

Мощный сервер БД за чуть более 2000$

Reading time 2 min
Views 15K
Здравствуйте хабравчане.

Пару месяцев назад наступил момент, когда один из моих порталов — татарский сайт знакомств перестал выдерживать нагрузку по вечерам и тупо падал. Онлайн доходило до 1800 пользователей при посещаемости свыше 50 тысяч за сутки(>20 тыс. уников). Портал размещался на одном выделенном сервере. В ходе анализа было выяснено, что не справлялся не только процессор, но и вся дисковая подсистема. Нужно было решать, что делать дальше.

На ближайший год планировалось как минимум полуторократное увеличение зарегистрированных пользователей и соответственное увеличение посещаемости и нагрузки. На данные момент база данных имела размер около 15 Гб.

Портал был написан на ASP.NET в связке с СУБД MS SQL Server 2008 R2.
Текущий cервер обладал такой конфигурацией: процессор — Intel Core Quad 9550 (12MB кеша), 4 Гб памяти, 2 диска — серверные WD на 7200 оборотов.

Проблема дисковой подсистемы решалась просто — покупкой SSD диска на 90 гигабайт и размещением фоток на нём, на данный момент их около 40 гигабайт(про опыт использования SSD-дисков на серверах могу написать отдельный пост).

Вторую проблему, связанную с процессором, можно было решить переносом базы данных на дополнительный сервер. Так как бюджет был довольно ограничен(примерно 2500$), я решил, что выгоднее не покупать, а собирать сервер самому. Было необходимо выжать за эти деньги как можно большую мощность, сохранив при этом достаточную надёжность.

Имея определённый опыт как конфигурирования так и сборки серверов, решил остановится на 2-х процессорном сервере с 4 быстрыми дисками.
серверная платформа(самая дешёвая с поддержкой 4-х дисков горячей замены и 2-х процессоров):
Tyan GT20B7002 — 1 шт ~ 700$,
процессоры(под 1366 сокет):
Intel «Xeon E5620» — 2 шт ~ 760$ (380$ за шт.),
жёсткие диски(SAS бюджет не позволял взять, SSD не рискнул использовать на сервере БД):
WD «VelociRaptor WD1500HLFS» — 4 шт ~ 480$ (120$ за шт.),
память:
2 Gb ECC Kingston — 8 шт ~ 540$

Далее фотоотчёт о сборке и потом несколько тестов:

Процессоры, память, диски


Всё готово к сборке



Осталось установить диски и запустить.

После сборки тестировал несколько дней сервак под нагрузкой, проверил диски и объеденил их по 2 в софтверный RAID 1. Первый рейд под систему и логи, а второй под данные. Почему сразу не в аппаратный RAID 10 спросите вы? Да потому, что я банально не разобрался в биосе материнки этой платформы. Там как то не очевидно это делается.

Установил MS SQL Server 2008R2 Standard. К тому же разместил базу(25 Гб) ещё одного проекта с чуть меньшей посещаемостью(10 тыс хостов, максимум 800 онлайн). Вот графики, отражающие нагрузку в пиковые часы(вечер, 19-22 часов):


Заметьте тут примерно 2500 пользователей онлайн(общее число зарегистрированных примерно 170 тысяч).

В заключение хочу отметить, что сервером очень доволен, он оправдал мои ожидания и уменьшил расходы — я полностью отказался от аренды серверов. Нужно будет чуть подоптимизировать саму базу данных, тогда, думаю, такая архитектура выдержит и 10 тысяч онлайн при нескольких сотнях тысяч зарегистрированных пользователей.

UPD: картинки храню в файловой системе.
Tags:
Hubs:
+26
Comments 151
Comments Comments 151

Articles