Сразу оговорюсь, цель состоит не в том, чтобы выяснить максимальные возможности системы, а в том, чтобы выяснить принципиальную производительность современных микрокомпьютеров как полноценных веб-серверов и помочь оценить конкурентоспособность виртуального хостинга.
Поэтому в данной статье не рассматриваются вопросы оптимизации и изучения предельно допустимой нагрузки.
Вместо этого эксперимент проводится на живых сайтах с реальными посетителями.
Введение
Наверное, многие, кто знаком с микрокомпьютерами съедобных семейств (Малиновые, Банановые, Оранжевые.), задумывались о расширении спектра их использования.
Первоначально разработанные для систем умного дома и робототехники, они становятся все более быстрыми, сохраняя при этом размер.
Низкое энергопотребление при увеличении мощности процессора делает их привлекательными для потенциального использования в качестве веб-серверов.
Давайте выберем для этого подходящую модель.
Почему Raspberry Pi 2 модель B?
Поскольку самым слабым местом таких систем с точки зрения хостинга является процессор, имеющий очень низкую относительную производительность (об этом чуть позже), мы попробуем организовать веб-сервер на бюджетном варианте, но который, тем не менее, Для наших задач может оказаться достаточно мощным — Raspberry Pi 2 model B. Он имеет 4-ядерный процессор, работающий в обычном режиме без охлаждения на частоте 900 МГц и возможность изменения этой частоты от 700 до 1200 МГц.Мы не будем увеличивать тактовую частоту; отметим лишь, что для «разгона» понадобится радиатор и, возможно, вентилятор.
Поскольку так получилось, что на сегодняшний день Raspberry Pi 2 model B имеет самый мощный процессор среди своих одноклассников, мы выбираем его для тестирования.
Технические особенности рассматриваемой платформы
Процессор
Процессор у нас необычный, из семейства RISC. Вкратце можно сказать, что набор инструкций у такого процессора значительно меньше, чем у «обычных», но простые команды он выполняет очень быстро.Но для выполнения сложных инструкций нужно много таких простых команд. Вот почему требуется больше циклов.
Так что если кто-то подумал, что 4-х ядер по 900 МГц для веб-сервера более чем достаточно, то стоит сделать поправку — четырехъядерный процессор Broadcom BCM2836 Cortex A7 для нашей задачи не будет быстрее старого Pentium 300-400 МГц.
Правда, он в 6 раз быстрее предыдущей одноядерной модели на Raspberry Pi и в 1,9 раза быстрее своего двухъядерного одноядерника на Banana Pi M2 (который, хотя и рекламируется как имеющий SATA и гигабитный Ethernet, гораздо менее подходит для веб-сервер из-за его процессора).
Именно из-за медлительности центрального процессора мы наблюдаем рекордно низкое потребление микрокомпьютеров.
По имеющимся данным, Raspberry Pi потребляет от 2 до 3 Вт, при пиковой нагрузке — 4 Вт, в простое — 1 Вт. Ну а 2-3 Вт (5В, 0,4-0,6А) в среднем на всю систему, за исключением питания носителей информации, это то, за что стоит бороться в сфере корпоративного или домашнего веб-хостинга, то, что может сделать Это экономически выгодные точки зрения.
Память
Используемая память не самая быстрая, это DDR2, но объёма вполне достаточный — 1Гб.
Надо сказать, что это неплохая сумма для обычных веб-серверов под управлением Linux.
Сетевой интерфейс
100-мегабитного сетевого интерфейса вполне достаточно для передачи данных.Большего нам и не нужно — подсистема хранения информации и процессор просто не справляются.
О большая нагрузка.
Хранилище данных
Перейдем к очень интересному моменту - встроенный картридер позволяет системе загружаться только с него (если только не перенаправить загрузчик.), а это в обычной ситуации ограничивает выбор основного носителя карта микро SD. Хорошая новость в том, что сегодня они могут иметь значительный объем и работать быстро.
Хотя минусы уже очевидны — мы вряд ли захотим хранить на нем файлы сайта, базы данных, своп и логи, во избежание медленной работы и преждевременного сокращения срока службы носителя.
Для этого у нас будет еще один накопитель на шине USB. Такой подход не только повысит производительность системы, но и даст преимущество модульности — можно легко заменить носитель на запасной и сделать резервную копию всего образа.
Вопрос в том, что именно мы хотим использовать в качестве внешнего хранилища — SSD-накопитель, HDD или быструю карту памяти.
Здесь каждый решает сам; многое зависит от характера размещаемых сайтов.
Следует помнить, что Raspberry Pi 2 использует стандарт USB 2.0, который ограничивает нашу файловую подсистему в скорости передачи данных.
В данном примере мы рассмотрим относительно медленный вариант записи в качестве внешнего устройства — USB-кардридера с подключенной полноразмерной SD-картой Lexar Professional, который позволяет записывать данные со скоростью всего около 15Мб/с при таком подключении.
.
Хотя (в общем случае) скорость носителя выше 100 мегабит как для чтения, так и для записи будет иметь для нас маловажное значение, поскольку связь с внешним миром ограничивается этой цифрой.
При использовании дисковых подсистем стоит задуматься об их энергопотреблении.
Жесткий диск 2,5" потребляет ~5 Вт и, вероятно, потребует отдельного источника питания.
Также следует помнить об специфической организации ввода-вывода на Raspberry через USB; очевидно, у нас есть еще одно узкое место:
Итак, тестовые носители:
«Внутренний»: MicoSD 8 ГБ класс 10
«Внешний»: SD 32Гб класс 10+ (UHS)
Установка и компоновка ЛАМПЫ
Система должна быть простой, но иметь полную функциональность.
Поэтому одно требование — ничего лишнего, а Apache мы будем только прятать за Nginx, благо память позволяет.
Операционная система
Минибиан устанавливается на «внутренний» носитель из образа 2015-02-18-wheezy-minibian.img. Это Debian 7.8 в минимальной конфигурации для Raspberry. Оговоримся, что стандартный репозиторий ожидает PHP не выше 5.5 и Apache не выше 2.2. Это не досадное ограничение, но для этой статьи полезно проверить, можете ли вы использовать последние версии.
Для того, чтобы установить PHP 5.6.x и Apache 2.4.x, которых нет в стандартном репозитории, мне пришлось поменять исходники на 8-ю версию Raspbian, система после apt-получить обновление стала иметь версию 8.0.
Апач
Версия 2.4.10 (Распбиан).gzip включен, включены все наиболее часто используемые модули из стандартного пакета, включая mod_rewrite, mod_cache., не считая тех, которые включены по умолчанию.
PHP
5.6.12-0+deb8u1 (кли).Запускается в Apache как префорк.
Есть php-curl, php-gd и другие популярные библиотеки.
MySQL
5.5.44-0+deb8u1 - (Распбиан).
Нгинкс
Нгинкс/1.6.2. За статику отвечает Nginx. сжатие gzip включено.Напомню, все логи пишутся на внешние носители, база данных MySQL есть, своп не отключен, а пуст на весь период тестирования.
В качестве вспомогательных утилит я использую PhpMyAdmin, htop, iostat и webmin. Exim4 установлен, но только для отправки сообщений из форм.
Как видите, наш сервер достаточно современный и функциональный.
Разочарую поклонников панели управления VESTA — к сожалению, производитель не поддерживает процессоры ARM и не собирается это делать в ближайшее время.
Поэтому вебмин.
Тестирование
Никаких синтетических тестов я сразу делать не собирался, так как они скорее из области очень далекой теории.На практике все во многом зависит от характера хостируемых сайтов, от распределения нагрузки во времени, от канала связи, количества просмотров, времени посетителей на сайте.
, а также от настройки.
Другими словами, я предлагаю посмотреть, что на самом деле происходит на существующих сайтах.
Тестируемые сайты не основаны на какой-либо CMS, а используют отображение изображений из базы данных на динамических (PHP) страницах, поэтому на MySQL может быть достаточно интенсивная нагрузка.
Но AJAX-соединений вообще нет. Поскольку наш хостинг пока не претендует на профессиональный, я посчитал достаточным для теста разместить на нем 16 активных сайтов с низкой посещаемостью, из них около пяти - около 100-200 человек в день, остальные - не более 50 посетителей.
за то же время.
Итого — около 800-900 человек в день, что по допустимой нагрузке сравнимо с недорогим виртуальным хостингом.
Половина посетителей приходится на вечер, основные посещения приходятся на 20-22 часа (~300 человек за два часа, в среднем 4 просмотра = 10 просмотров в минуту, ~700 кб = 116 килобайт трафика в секунду).
Мы обозначим это время как «час пик» и заодно проведем тестирование.
Тестов будет всего два типа — оценка производительности с помощью сторонних сервисов и отчет утилит htop и iostat о реальной работе.
1. Время генерации и загрузки страниц пользователем в «часы пик»
Мы используем всего два основных параметра — время генерации страницы и время загрузки страницы, для двух типов страниц — «тяжелые» (тяжелые для процессора, т. к.много изображений из MySQL, долгая генерация) и «легкие» (обычные динамические PHP-страница).
Мы будем повторять каждый тест по 10 раз, чтобы уменьшить вероятность случайного результата, а также будем использовать разные сервисы.
Напомню о географии тестирования серверов и их возможной загруженности.
Поэтому абсолютные результаты могут сильно отличаться, это нормально.
Повторные измерения проводились с интервалом 5–10 минут, чтобы охватить различное время загрузки служб.
Канал тестируемой Малины - гигабитная оптика, география - Сибирь, 150 гарантированных мегабит до Москвы.
С целью проверки возможности сервера обслуживать несколько одновременных подключений было запущено тестирование одновременно на следующих площадках сервиса:
Страница `Простая` (547 Кб, без обращений к MySQL)
PingDom.com, Швеция Время загрузки страницы (46 запросов): минимальное — 925 мс, максимальное — 1124 мс, среднее — 955 мс.Google PageSpeed Insights К скорости претензий нет. Сайтспид.ру Общее время загрузки страницы 3,9-4,2, среднее 4,0. Время генерации страницы со 139 до 157, в среднем 145 мс.
Поэтому у Google претензий нет — укладываемся в допустимые ими 200 мс.
`Тяжелая` страница (843 кб, включая 38 картинок по 10-15 кб из MySQL)
PingDom.com, Швеция Время загрузки страницы (85 запросов): минимальное — 946 мс, максимальное — 1001 мс, среднее — 973 мс.Google PageSpeed Insights К скорости претензий нет. Сайтспид.ру Общее время загрузки страницы 5,3-4,2, среднее 4,0. Время генерации страницы со 158 до 169, в среднем 162 мс.
2. Отчет утилиты htop
Как и ожидалось, Htop показал, что основным потребителем процессорного времени являются процессы MySQL. Они «съели» 98 минут из последних 24 часов процессорного времени.Что неудивительно — мы изначально ожидали частых и «тяжелых» запросов к базе данных.
Если бы изображения находились в кэше nginx, мы бы имели прирост производительности, но тест темы интересен тем, что он с запасом имитирует повышенную нагрузку на MySQL, что, кстати, характерно для большинства CMS.
3. Отчет из утилиты iostat
Эта утилита показала средние скорости чтения и записи на носителе: 1. «Внутренний» носитель (системный) — 0,87 кб/с чтение в среднем, 15,5 кб/с запись в среднем (скорее всего из-за кеширования nginx, есть что улучшить в конфигурации).2. «Внешние» носители (сайты, логи, базы данных) — чтение 2,4 кб/с и запись 3 кб/с (здесь все нормально, чтение кэшируется, логи пишутся).
4. Распределение ресурсов ЦП
Распределение процессорного времени по htop, выборка — ровно два дня работы (обслужено ~1600 уникальных посетителей по метрикам Яндекса): MySQL 6,8% хтоп 1,8% нгинкс 0,75% apache2 <0.3% Практически все остальное время процессор отдыхал.В результате мы имеем большой запас свободного процессорного времени, резерв повышения частоты процессора и резерв скорости записи носителя.
Доступно множество оптимизаций по настройке как серверных программ (например, перенос кэша nginx на отдельный носитель), так и самих сайтов.
В целом существует хороший потенциал для повышения общей производительности.
Нижняя граница
Нашему виртуальному посетителю понравилась скорость веб-сервера микрокомпьютера, несмотря на то, что были и другие одновременные посещения.Таким образом, несмотря на узкие места (USB и процессор), мы делаем вполне очевидный вывод — полноценный веб-сервер на Raspberry Pi 2 model B вполне реален.
Как по программному обеспечению, так и по техническим параметрам.
Исходя из очень низкой загруженности рассматриваемого варианта, предположу, что он сможет быстро обслуживать не менее пары тысяч посетителей среднестатистического сайта (сайтов?) в день.
Многопроцессорность помогает быстрее справляться с запросами, памяти для кэширования достаточно, передача данных по USB удовлетворительна, поэтому детский сервер позволяет не только экономить на электроэнергии, но и быстро (и недорого!) заменять вышедшее из строя оборудование.
Такая система может окупить себя при использовании в сети предприятия в качестве корпоративного сервера (сервера базы данных, веб-сервера, сервера резервного копирования, файлообменника) по сравнению с другими популярными решениями.
И это наверняка станет альтернативой виртуальному хостингу в умелых руках.
Например, на бюджетном источнике бесперебойного питания микрокомпьютер в паре с роутером может работать часами, поэтому вопрос кратковременных (и не очень кратковременных) отключений электроэнергии можно нивелировать дома, если на сайте провайдера тоже есть UPS. Также вы сможете управлять электричеством, подавать команды различным устройствам, подключать видеокамеру и различные датчики.
Пробуйте, экспериментируйте, микрокомпьютеры не только недорогие, но и приятно тихие.
Теги: #Компьютерное оборудование #Raspberry Pi #Умный дом #LAMP #веб-сервер #banana pi #микрокомпьютер #веб-сервер #ARM CPU
-
Аниме-Шоу В Интернете
19 Oct, 24 -
Мини-Dv-Рекордеры
19 Oct, 24 -
Toshiba Выпустила Ноутбук Nb300
19 Oct, 24 -
Firefox Gecko, «Которого Мы Потеряли»
19 Oct, 24 -
Бизнес-План – Общее Описание Проекта
19 Oct, 24