Обновить системное окружение на выделенном сервере клиента, перевести работу ядра 1С-Битрикс на PHP 7.2.
На одной лицензии работает два разных проекта проекта. Оба ( deep-sound.ru и pro-karaoke.ru) являются активными, один несколько уступает по нагрузке и функциональности, тем не менее нам это сильно добавило нам хлопот.
Критические ошибки. Клиент обратился к нам, в момент когда вопрос превратился в критическую проблему, нам нужно было довольно оперативно включаться в работу. Из-за не оптимизированной работы скриптов и кода, в пиковые нагрузки проекты становились недоступными, проект мог не работать от нескольких минут до получаса. Со всеми вытекающими из этого последствиями:
- Клиенты не могли совершить заказ, сайт просто отказывался загружаться.
- Поисковые роботы отказывались индексировать страницы и понижали проекты в выдаче.
Композит и технология CDN. Обычно первым, что приходит в голову для решения задачи ускорения загрузки страниц и снижения нагрузки на сервер. Две технологии 1С-Битрикс Композит и CDN (загрузка статического контента через сеть дистрибуции).
Настройка «композита» в данном случае оказалось не рентабельной, поскольку для его корректной работы фактически пришлось бы пересобрать оба проекта (спасибо прошлым поколениям программистов) и оказалось, просто нерентабельным на данном этапе.
Технологию CDN успешно подключили, но она по какой-то причине не дала, сколько нибудь заметного прироста производительности. Что очевидно было обусловлено спецификой данного проекта.
Готовые решения и плагины. Обоим проектам не один год и для его развития активно использовались плагины и готовые решения от сторонних поставщиков, которые в разное время дорабатывались разными программистами под требования клиента.
В таких случаях, всегда кто-то относится более ответственно, кто-то делает по принципу «лишь бы работало». ,Обычно, в таких случаях все предпочитают «не трогать пока работает».
Размещение проектов (хостинг). Оба проекта лежат на выделенном сервере на площадке компании Селектел, сервер использовался следующей конфигурации:
- Процессор: Intel E3-1270v5 (4x3.6 ГГц HT)
- Память: 16 ГБ — 2 x 8 ГБ DDR4 ECC
- Дисковая подсистема: 2 ТБ SATA + 240 ГБ SSD
Как видите, это довольно мощная машина с большим заделом по ресурсам, тем не менее наши относительно большие проекты, довольно умело ставили его «на колени». Очевидно, что ресурсов сервера более чем достаточно и узкое место нужно искать в программной части комплекса.
Скорость сайта до проведения работ на проекте
План перехода
Полностью изучив оба проекта, мы составили следующий план перехода:
- Проводим аудит обои проектов, оптимизируем наиболее «тяжелые» скрипты, разделы и плагины.
- Приобретаем для временного размещения облачный хостинг с максимально близкими характеристиками.
- Устанавливаем на временном сервере все необходимое ПО и окружение, включая PHP 7.2 и все необходимые библиотеки.
- Переносим оба проекта и адаптируем к новой версии PHP.
- Тестируем, проверяем чтобы все работало корректно.
- Переключаем весь трафик на временный сервер.
- Обнуляем боевой сервер и устанавливаем самое свежее программное обеспечение (CentOS 7.6, NGINX + Apache2, MySQL5, Memcached и Sphinx).
- Устанавливаем 1С-Битрикс: Веб-окружение и все необходимые библиотеки
- Возвращаем все скрипты, базу и пользовательские данные с временного хостинга на боевой.
- Возвращаем трафик на основной сервер.
- Удаляем временный облачный хостинг.
Оптимизируем наиболее «тяжелые» скрипты и разделы
Кому-то это решение может показаться странным. Действительно, зачем что-то делать на старом движке если все равно, мы все будем переносить и переделывать. Отчасти это верно, но как я уже писал, сайт регулярно «повисал» и просто отказывался работать. С этим нужно было, что-то сделать уже прямо сейчас.
По это причине, до «большого переезда» решено было реализовать программу минимум:
- Установить и настроить Memcached, на сервере достаточно оперативной памяти для его нормальной работы. Наша гипотеза предполагала, что это даст заметный прирост.
- Запустить скрипт для оптимизацию размера всех изображений используемых на сайте. Обнаружили, в новостях, пресс-релизах и некоторых карточках товара изображения размером в 5-7 Мегабайт.
- Провести аудит всех основных посадочных страниц и отключить неиспользуемые, дублирующие друг друга библиотеки, таблицы стилей, скрипты и прочее. Без переверстки страниц.
Размер изображений на сервере до оптимизации 8.7 GBЭто оказалось неплохой идеей, поскольку кроме всего вышеперечисленного с помощью сканера AI-Bolit нашли вредоносный код, который мог с правами админа на сервере и исполнять вредоносный код.
После оптимизации 3.8 GB
Результат. Уже вторую неделю оба сайта работают на новом ядре 1С-Битрикс. Производительность возросла более чем в два раза, нагрузка на сервер снизилась без малого в три раза.
Для сбора достоверной статистики прошло слишком мало времени. Субъективно, страницы загружаются в разы быстрее и за все время после обновления на сайте не произошло ни одного сбоя или отказа в работе.
Статистика по проекту:
- Работало 4 специалиста;
- Затратили 38 рабочих часов;
- Написали 247 комментариев;
- Уложились в две календарные недели.