Производительность Bitrix Старт на Proxmox и Virtuozzo 7 & Virtuozzo Storage
Тестирование производительности Bitrix Старт на двух принципиально разных платформах.
Замерять будем при помощи встроенной панели производительности Bitrix.
C одной стороны, бесплатная версия Proxmox 4.4, LXC контейнеры с использованием файловой системы ZFS на SSD дисках.
С другой стороны, лицензионная Virtuozzo 7 CT + Virtuozzo Storage. В этом варианте мы используем обычные SATA диски + SSD для кеша записи и чтения.
Мы учитываем, что Virtuozzo 7 является коммерческой системой, требующей обязательного лицензирования, а Proxmox 4 можно использовать бесплатно, но без технической поддержки.
По этой причине, полноценно сравнивать две платформы конечно не корректно, но если
интересно узнать как можно увеличить производительность сайта используя одно и тоже железо, одинаковую конфигурацию виртуальных машин и ее сервисов, то данная статья может быть вам полезна.
Цель данного тестирования — измерить производительность сайта Bitrix Старт 16.5.4, установленного внутри контейнеров Proxmox LXC и Virtuozzo 7.
Предыстория
Наша команда занимаемся сопровождением различных web-проектов.
Основная задача — проектирование и внедрение окружений для web-систем. Мы следим за их высокой производительностью и доступностью, осуществляем их мониторинг и бекап.
Одной из важных проблем при сопровождении проектов является качество работы хостинга[9], на котором размещены проекты наших клиентов. Возникают ситуации, когда VPS[9] падает или работает медленно. Бывает, что сервер без видимой причины недоступен или внезапно перезагружен.
В эти моменты мы становимся заложниками службы технической поддержки хостинговой компании и нам приходится тратить время на диагностику проблемы, подготовку статистики и предоставление информации технической поддержке хостинга[9]. Решение подобных проблем иногда длится сутками.
Что бы решить для себя эту проблему, мы приняли решение построить небольшой хостинг[9] для наших клиентов. Для этого мы купили сервера и приступили к поиску подходящего дата-центра для их размещения. В качестве площадки мы остановились на Selectel[10] — сервера в их Московском дата-центре работают без перебоев. Техническая поддержка отвечает очень быстро и решает все возникающие вопросы.
Изначально, мы выбрали самое просто решение — поднимать сервера на базе Proxmox 3 с контейнерами OpenVZ и рейдом из SSD дисков. Это решение было очень быстрым и достаточно надежным.
Время шло, появился Proxmox 4 и мы постепенно перешли на его использование в сочетании с ZFS. Сразу столкнулись с массой проблем связанных с LXC. Например, в контейнерах не работал screen и multitail без предварительного запуска
exec </dev/tty
в контейнере, в Centos 6 без выполнения команды
sed -i -e 's/start_udev/false/g' /etc/rc.d/rc.sysinit
не работал ssh, не работал pure-ftpd итд. Хорошо все изучив и доработав конфигурацию, мы наладили у себя работу Proxmox и были довольны.
Из плюсов, мы использовали сжатие на уровне ZFS:
Это позволяло экономить много дискового пространства для наших пользователей
Решало проблему переполнения файловых систем, например из-за логов,
Исключало проблему, когда база данных mysql с движком innodb не уменьшалась на диске при удалении из нее, а просто заполнялась пустыми блоками
Мы могли перемещать VPS[9] клиентов в режиме реального времени с сервера на сервер, используя pve-zsync.
В общем, переход был успешным, но проходил сложно. Все проверялось на тестовых серверах и в конечно итоге, мы благополучно переехали на новую архитектуру.
В какой то момент, стало необходимым задуматься об увеличении производительности виртуальных машин и сайтов наших клиентов.
Мы начали пробовать различные альтернативные варианты. Для тестов мы купили лицензии на Virtuozzo 7 и Cloud Storage. Собрали тестовый кластер Virtuozzo Storage, настроили кеширование и запустили первые тестовые виртуальные машины. На всех этапах нам помогала техническая поддержка Virtuozzo[11]
В итоге, результатом оказались очень довольны и перевели клиентов на новую архитектуру.
В одной из следующих статей я расскажу основные моменты внедрения и о тех подводных камнях, с которыми мы столкнулись.
В качестве первого испытуемого используется Proxmox 4.4-5/c43015a5
Сайты расположены на пуле zfs из 2 SSD дисков в режиме зеркала, через драйвер Proxmox:
zpool create -f -o ashift=12 zroot raidz /dev/sdb3 /dev/sda3
zfs set atime=off zroot
zfs set compression=lz4 zroot
zfs set dedup=off zroot
zfs set snapdir=visible zroot
zfs set primarycache=all zroot
zfs set aclinherit=passthrough zroot
zfs inherit acltype zroot
Все остальное для варианта Proxmox полностью стандартно.
Вариант с Virtuozzo 7:
в качестве гипервизора у нас Virtuozzo release 7.0.3 (550), в качестве дискового массива используется Virtuozzo 7 Storage.
В качестве MDS используются 3 сервера:
На тестовом кластере используется режим без репликации, те 1:1.
На реальных боевых серверах используется режим 3:2, т.е. все данные одновременно хранятся на 3 серверах кластера, это позволяет избежать потери данных в случае падения до 2 серверов кластера.
Тестовые VPS[9] Bitrix имеют следующие характеристики:
CPU 4 ядра
RAM 4GB
Centos 7
Nginx как фронтенд и для отдачи статики
Apache 2.4 Prefork для работы .htaccess и реврайтов
Переход на новую облачную платформу дал нам высокую доступность данных за счет репликации на 3 сервера, но мы потеряли полезную опцию zfs — сжатие.
Мы получили прирост производительности тестового сайта на Bitrix, в среднем на 45%.
Если говорить о реальных сайтах, то в зависимости от количества плагинов и сложности кода, мы получали прирост до 3 раз.
Из плюсов — мы получили возможность миграции виртуальных машин с сервера на сервер быстро, без необходимости их выключения.
Из минусов, в отличии от Proxmox у Virtuozzo 7 пока что нет надежной и удобной панели управления, так что все приходилось делать руками или через shell скрипты.
Существующий Automator все еще очень сырой и работает непредсказуемо.
В пользу Virtuozzo — это его техническая поддержка, она на высоте. Также есть хорошая документация по всем компонентам системы, а ведь с этим у Proxmox большие проблемы. Даже чтобы написать на форуме, необходимо оплатить подписку, а на мой взгляд оно того совершенно не стоит. Кластер Proxmox работает пока не сломается, но вот когда сломается, поднять его очень сложно и документации для этого явно не хватает.
Надеюсь, статья окажется для вас полезной.
В следущий раз я расскажу о переходе Bitrix на php70 и сравню производительность различных редакций Bitrix.
[1] Zabbix 2.2 верхом на nginx + php-fpm и mariadb: https://habrahabr.ru/company/acronis/blog/198354/
[2] HAPRoxy для Percona или Galera на CentOS. Его настройка и мониторинг в Zabbix: https://habrahabr.ru/company/acronis/blog/198448/
[3] «Идеальный» www кластер. Часть 1. Frontend: NGINX + Keepalived (vrrp) на CentOS: https://habrahabr.ru/company/acronis/blog/198934/
[4] «Идеальный» кластер. Часть 2.1: Виртуальный кластер на hetzner: https://habrahabr.ru/company/acronis/blog/204190/
[5] «Идеальный» кластер. Часть 2.2: Высокодоступный и масштабируемый web-сервер, лучшие технологии на страже вашего бизнеса: https://habrahabr.ru/company/acronis/blog/209934/
[6] «Идеальный» кластер. Часть 3.1 Внедрение MySQL Multi-Master кластера: https://habrahabr.ru/post/253869/
[7] Ускорение и оптимизация PHP-сайта. Какие технологии стоит выбирать при настройке сервера под PHP: https://habrahabr.ru/post/264487/
[8] Сравнение скорости исполнения кода Drupal для PHP 5.3-5.6 и 7.0. «Битва оптимизаторов кода» apc vs xcache vs opcache: https://habrahabr.ru/post/264775/