Новую страницу нашего блога мы начнем, пожалуй, с небольшого эксперимента. Мы решили развернуть наш офисный пакет ONLYOFFICE на мини-серверах. В качестве непривычной тестовой среды для нашего ПО мы использовали три разных (по стоимости и, соответственно, мощности процессора) машины Intel NUC.
Что из этого всего вышло — читайте далее.
Зачем нам это?
Нам нравится идея мини-серверов для небольших команд и домашних офисов. Недавно мы выпустили корпоративное серверное решение ONLYOFFICE Enterprise Edition и решили развеять миф о том, что для того, чтобы оно работало, нужна какая-то массивная аппаратная поддержка. Большой сервер и отдельное помещение в качестве его резиденции это, конечно, хорошо, но вовсе не обязательно, особенно в случае маленьких компаний.
В общем, мы за компактность и минимализм. С такими мыслями мы и отправились на поиски подходящего железа для претворения концепции в жизнь. Конечно, свой итоговый выбор мы уже заспойлерили в начале статьи, но теперь мы еще его и обоснуем.
Наши подопытные
В общем-то наши требования к железу вполне очевидны: что-то понятное, надежное, помещающееся в пределы разумного в плане размера и желательно недорогое. И мы остановились на Intel NUC'ах. Возможно, это было несколько эмоциональное решение, основанное на привлекательной внешности их железочек, но, в итоге, наш список покупок выглядел так:
- Intel NUC5PPYH на базе Intel Pentium N3700 с частотой 1,6 ГГц, с памятью типа DDR3L и поддержкой 2,5 дюймовых дисков или SSD. Стоимость покупки: 14 550 рублей.
- Intel NUC NUC5i3RYH на базе процессора Intel Core i3-5010U, с памятью типа DDR3L и пространством для 2,5-дюймового жесткого диска или твердотельного накопителя формата M.2. Покупка обошлась нам в 21 тысячу рублей (на момент написания статьи — 24 360 рублей).
- Intel NUC NUC5i5RYH (процессор Intel Core i5-5250U, память DDR3L, пространство для 2.5” HDD или SSD M2). Эта коробочка стоила примерно 31 тысячу рублей (на момент написания статьи — 31 720 рублей).
С такими приобретениями мы почти готовы приступить к запланированным экспериментам.
Настройка
Но сначала необходимо подготовить наших «пациентов». Это простая и не слишком обременительная процедура всего в четыре шага:
Шаг 1. Ставим Ubuntu 15.04.
Шаг 2. Обновляем ядро до последнего (У Mono есть проблемы с некоторыми ядрами, но на последних все точно работает).
Шаг 3. Ставим Docker (мы поставили последнюю версию из их репы, то есть Docker version 1.9.1, build a34a1d5, но, на самом деле, подойдет 1.4 или выше).
Шаг 4. Используя скрипт, разворачиваем docker-контейнеры с ONLYOFFIC’ом, а еще точнее с последним серверным решением ONLYOFFICE Enterprise Edition.
Проделав эти манипуляции со всеми тремя NUC’ами, мы приступаем к самому интересному, а именно тестируем производительность нашего решения на разном железе.
Самое интересное
Чтобы посмотреть, как себя чувствует наш софт в новом окружении, мы решили воспользоваться JMeter’ом.
Сразу оговариваемся, что проводим ни в коем случае не нагрузочное тестирование, а тестирование производительности. Мы не ищем узкие места по нагрузке в приложении, а смотрим, насколько наши железочки хороши для такого ПО.
Итак, мы пишем небольшой скрипт, который дергает все важные части системы и создает определенную нагрузку. Так как наши подопытные NUC'и всё-таки не являются настоящими серверами, мы берем тестирование в 10,20,30,40 и 50 потоков. С такой нагрузкой мы не упираемся в ширину канала, и, соответственно, нам не нужно поднимать несколько распределенных клиентов.
Параллельно с тем, как на сервере создается нагрузка, мы открываем браузер и смотрим, сколько времени грузится страничка.
Ramp up период для всех прогонов составлял 1 секунду. Для получения каждого результата делалось 10 замеров. В таблицу с результатами мы включили только средние значения. А вот, собственно, и она: )
Number of thread group |
Errors % |
Samples |
Page Load (sec) |
Speed (kB/s) |
RPS |
10 |
0.65 |
1394 |
9.94 |
106.53 |
10.56 |
20 |
0.65 |
3095 |
19.38 |
85.4 |
8.48 |
30 |
0.51 |
5845 |
20.01 |
97.65 |
9.66 |
40 |
0.75 |
5311 |
22.46 |
101.6 |
10.19 |
50 |
0.61 |
8143 |
27.70 |
101.26 |
10.05 |
|
|
|
|
|
|
Number of thread group |
Errors % |
Samples |
Page Load (sec) |
Speed (kB/s) |
RPS |
10 |
0.37 |
2441 |
7.41 |
208.36 |
20.69 |
20 |
1.11 |
3516 |
19.52 |
131.31 |
19.12 |
30 |
0.65 |
4602 |
20.19 |
209 |
18.82 |
40 |
0.78 |
5251 |
30.69 |
168.23 |
16.83 |
50 |
0.89 |
10689 |
50.41 |
166.42 |
16.6 |
|
|
|
|
|
|
Number of thread group |
Errors % |
Samples |
Page Load (sec) |
Speed (kB/s) |
RPS |
10 |
0.23 |
3536 |
3.96 |
325 |
29.22 |
20 |
0.55 |
3605 |
6.98 |
320.06 |
29.31 |
30 |
0.95 |
6625 |
18.98 |
208 |
28.77 |
40 |
0.55 |
6671 |
21.68 |
310 |
28.03 |
50 |
0.67 |
7358 |
24.18 |
309.5 |
28.08 |
Результаты
Мы получили довольно неплохие и, в принципе, предсказуемые результаты.
Правда, NUC (N3700) показал себя несколько лучше, чем мы ожидали. Из-за слабенького процессора мы не возлагали на него больших надежд, однако тесты показали, что чисто теоретически такая железочка подойдет для небольшой команды до 15 человек. Впрочем, если говорить о судьбе нашей «пациентки», то она, вероятнее всего, всё равно проведет остаток дней в конференц-зале.
Результаты NUC5i3RYH также вполне ожидаемо оказались чуть лучше, чем у предшественника. На 10 потоках эта железка выдала 20 RPS, и потому вполне подойдет для небольшого офиса в 15 человек.
Третья с наиболее мощным процессором ожидаемо показала лучшие результаты и выдала почти 30 запросов в секунду. По нашим наблюдениям, этого достаточно для нормальной работы офиса в 50 человек, если конечно все эти 50 человек не бросятся одновременно конвертировать pdf-файлы по 800 мегабайт.
Сухой остаток
Конечно, такой вариант не сравнится с полноценной серверной версией по мощностям и надежности. Зато это отличный вариант для тех, кто по соображениям безопасности не хочет хранить свои данные «где-то там» в публичном облачном сервисе и при этом не имеет возможности или желания обзавестись собственным сервером. Такая коробочка вполне прилично работает с нашим ПО и может стоять в центре небольшого офиса рядом с принтером, никого не раздражая.
Небольшой лайфхак: мы также использовали такое решение в качестве «выставочного» варианта. «Пациент» номер три (NUC5i5RYH) сопровождал нас на международный форум «Открытые инновации». С его помощью мы успешно представили на мероприятии нашу новую серверную версию — симпатичная внешность и вполне хорошая производительность сделали своё дело.
Комментарии (21)
guglez
13.01.2016 17:19Слишком много спорных моментов…
15.04 — != LTS
Intel NUC = no ECC RAM
Ну и ни слова об отказоустойчивости — даже рейда нет зеркального
Marazmatik
13.01.2016 17:53Я с вами согласен, что это нужно, но если у вас маленькая компания, которой достаточно бекапить данные на другой пк стредствами onlyoffice такое решение может подойти.
В итоге все сводится к тому, что есть микроскоп и молоток. Видимо этот инструмент именно Вам не подходит, но может подойти кому-то другому.guglez
13.01.2016 17:55ИМХО в те же деньги (а то и меньше) можно нахватить HP microserver с ЕСС мозгами и возможностью установки 4х жестких дисков.
vosi
13.01.2016 18:37размеры существенно отличаются
нуку я могу в самолет в ручном багаже взять, и у заказчика/на отдыхе поработать
шпукс микросервер — нет, да и gen8 больше чем gen-previous какой-там был… 6?
creker
13.01.2016 18:55+1У меня вот что-то ваш софт тормозит жутко. В качестве сервака обычная машина Core i5-4570, 16ГБ оперативы, 3 диска RAID5 в качестве хранилища. Помню ваше требование, что document и community сервера под виндой на одной машине не ставятся (хотя руками конфиги я как-то пробовал править и кое-как оно запускалось), поэтому запустил их в ubuntu виртуальной машине через docker, где помимо этого работает еще gitlab. Сразу скажу, что последний там летает и ниразу не доставлял проблем даже, когда виртуалке были отданы 2 ядра и 4ГБ памяти.
В данный момент, чтобы хоть как-то это работало, виртуалке выделены все 4 ядра и 8 ГБ оперативы. Софт выжирает все эти 4 ядра запросто на 100% и около 4 ГБ оперативы просто на пустом инстансе, когда я один жмакаю по интерфейсу. Да еще и своп жирный в требованиях прописан. Особенно жутко медленно работает контрольная панель — она запросто вываливается в timeout при попытке проверки версий, при холодном старте требует минутных ожиданий, пока там что-то продумается, прокешируется видимо. После чего более менее начинает ворочаться. Периодически все равно помирает. Сам community и document сервер работает лучше, но тоже периодически начинают о чем-то думать. При холодном старте опять же что-то там видимо кешируется, что сопровождается секундными задержками открытия страниц.
В общем, после таких чудес под большим вопрос находится приобретение платной версии продукта. Даже с учетом виртуальной машины и RAID5 такого быть не должно. Сразу скажу, что последний работает с включенным кешированием и массив выдает в бенчмарках цифры даже выше, чем один диск сам по себе, судя по обзорам.xkorolx
14.01.2016 13:11+1Проблема существует, и мы её решаем. По большей части торомоза вызваны портированием .net приложения под mono. Сейчас ждем выхода asp.net vnext, который должен избавить нас от большей части подобных трудностей.
Описанная вами ситуация вызвана вот чем: при первом старте приложения мы, динамически, в несколько потоков, проходим по всем страницам приложения, отображая пользователю страницу прогрева. Во время прогрева создаются asp.net temporary files, и это занимает значительное время. При рестарте прогрев осуществляется в фоновом режиме.
Однако всё это временно — это всего лишь первая версия, над улучшением которой мы работаем каждый день.
mihmig
14.01.2016 10:18Развернул на виртуалке только для того чтобы проверить модуль «Документы». Увы, чуда не произошло, модуль просто не запустился на тестовом документе:
Потеряно соединение с сервером. В данный момент нельзя отредактировать документ.
А жаль, так хотелось онлайн-редактор документов в интранете.
А может есть альтернативы для тех фирм, где гугл-доки неприемлемы по соображениям безопасности/отсутствия мегабитного интернета?xkorolx
14.01.2016 13:12+1Если вы разворачивали Enterprise на виртуалке, то у вас, скорее всего, упал супервизор. Поднять его можно. Попробуйте поднять на Docker'e, а не на, например, VmWare. Также похожие проблемы обсуждаются на форуме разработчиков. Можно там посмотреть/написать.
mihmig
15.01.2016 11:24Спасибо, помогло, открыл загруженный *.doc — документ (потребовалась конвертация). Документ сложный, но с форматированием проблем не заметил.
К сожалению, для презентации начальству пока не готов :)
например: печать (путём формирования PDF конечно же, иначе в браузере никак) должна осуществляться не путём скачивания PDF-файла, а непосредственным его отображением. Чувствую — надо поправить где-то HTTP-заголовок content-disposition…
Напишу разработчикам на форум, проверим «обратную связь».xkorolx
15.01.2016 14:03В webkit-браузерах будет работать после ближайшего выпуска. Также можно печатать напрямую на принтер в десктопном приложении (находится на финальной стадии тестирования).
kvaps
Спасибо за статью и за ваш продукт. Intel nuc — классная платформа.
Пользуясь случаем хотел спросить, почему вы свой mailserver в DockerHub не переведете на Automated Build? — последний раз когда пытался запустить ваши образы на centos 7, именно он у меня почему-то так и не запустился.
xkorolx
Давайте разберемся! Какое сообщение об ошибке вы получили? Развертывали по инструкции?
Для упрощения развертывания ONLYOFFICE, в состав Enterprise-версии мы включили контрольную панель, которая позволяет в один клик обновить/проинсталлировать CommunityServer, DocumentServer, Mailserver, ControlPanel.
На самом деле, мы могли бы. Но на данный момент нам удобнее делать сборку и присваивать ей имя. Для отслеживания версий/поддержки обновлений мы помечаем отдельным тэгом каждый выпуск CommunityServer, DocumentServer, Mailserver, ControlPanel. Control Panel в новой коммерческой сборке ориентируется на выставленные тэги в DockerHub, и, в зависимости от полученной информации, отображает, доступно обновление или нет.
kvaps
Спасибо за ответ, теперь причина ясна.
На счет ошибки, образ разворачивал через docker-compose, использовал ваш конфиг. Ошибку к сожалению уже не помню, но она была какая-то очень странная и вовсе не гуглилась. Так как стояла задача в первую очередь просто оценить функционал и внешнее устройство OnlyOffice, с ней не сильно парился, запустил под Ubuntu и все заработало.
Должен сказать, решил сейчас проверить на Centos7, все вроде тоже завелось. Беру свои слова обратно :)
xkorolx
а вам спасибо за вопрос. рады, что всё завелось: )