Сайт Государственной Думы. Готовимся к высоким нагрузкам

Главная / Блог /

Задача подготовки сайта к высоким нагрузкам является комплексной: любое из звеньев системы, участвующих в формировании конечной страницы сайта, может оказаться слабым в ответственный момент и привести к проблемам в работе сайта. В ходе нагрузочных испытаний проводилось последовательная оптимизация каждого из звеньев системы, обеспечивающих работу сайта, а затем тестирование системы в целом.

В качестве платформы для сайта Государственной Думы был использован 1С-Битрикс версии 9.5, редакция «Портал».

Оптимизация системы

Тестирование системы

Оптимизация системы

Аппаратное обеспечение

Заказчиком был предоставлен сервер с характеристиками, превышающими или равными заявленным в конкурсной документации:

ПодсистемаХарактеристики
ПроцессорDual Intel Xeon E5530 Quad-Core (2,4Gh 8Mb)
Оперативная память24 Gb
Жесткие диски 2.5"16х147Gb SAS (10000 rpm) 2,5"

Программное обеспечение

Использовалась типовая в таких случаях двухуровневая конфигурация веб-серверов из nginx 0.8.x в виде frontend и Apache 2.x в виде backend-сервера.

Nginx

Nginx в нашем случае выполняет несколько функций:

  • Самостоятельная отдача статичных файлов css, js, изображений и др.;
  • Передача веб-серверу Apache php-запросов;
  • Возможность просмотра flv-видео с произвольного места;
  • Переадресация пользователя при получении запроса на страницы старой версии сайта.

Для файлов формата css, js, а также для html-страниц было включено gzip-сжатие. Для всех статичных файлов было установлено максимальное «время жизни»:

expires max;

Количество рабочих процессов nginx worker_processes было задано равным количеству ядер.

Apache

Apache принимает локальные запросы по внутреннему порту от nginx. Для корректной передачи IP-адресов пользователей был использован модуль RPAF.

Из расчета расходования оперативной памяти (бралось 40 Мб на процесс) и загрузки процессора Apache были выбраны следующие параметры его работы:

StartServers          40
MinSpareServers       40
ServerLimit          200
MaxClients           200
MaxRequestsPerChild  200

При длительной работе процесса наблюдался регресс в сторону увеличения потребления оперативной памяти, поэтому значение MaxRequestsPerChild было уменьшено до 200.

PHP

Что касается интерпретатора PHP, все процедуры настройки достаточно стандартные.

Была установлена последняя стабильная версия PHP 5.2.x и eAccelerator 0.9.6.x. Опытным путем был определено достаточное количество выделяемой оперативной памяти для eAccelerator:

eaccelerator.shm_size="256"

Во избежание утечек памяти были добавлены разумные ограничения работы PHP:

max_execution_time = 60
max_input_time = 60
memory_limit = 32M

MySQL

При настройке конфигурации СУБД уделялось повышенное внимание выделению памяти под те или иные задачи, отдельно рассматривалась настройка InnoDB. Учитывались рекомендации модуля «Производительность» 1С-Битрикс.

Настройка 1С-Битрикс

Кеширование

Наиболее эффективным средством ускорения работы 1С-Битрикс является встроенная система кеширования. В последних редакциях она стала еще удобнее с появлением технологии Сache Dependencies. Были проведены стандартные процедуры проверки и настройки использования кеширования компонентами сайта. Небольшой доработки потребовал механизм кеширования в управляемых таблицах из-за своего сложного устройства и богатых возможностей.

В качестве способа хранения был выбран стандартный файловый кеш. Показатели работы с memcached нас не устроили, кроме того наблюдались проблемы со сбросом кеша в memcached в определенных ситуациях.

Модули сайта

Одним из способов ускорения сайта на 1С-Битрикс является отключение наиболее ресурсоемких модулей, отказ от которых возможен в определенных ситуациях. Это, например, модули Проактивная защита, Веб-аналитика и другие. В нашем случае мы смогли отказаться лишь от модуля Компрессия, функции которого выполняет nginx. Остальные модули входят требования технического задания и необходимы для полноценной работы сайта.

Тестирование системы

Тестирование базовой нагрузочной способности. Сценарии тестирования

Сначала нами была проанализирована статистика посещения прежней версии сайта Государственной Думы. В список наиболее популярных страниц входили:

Страница% от общего числа
Всего запросов100,00%
Главная страница (/)46,10%
Страницы новостей38,59%
Поиск по законопроектам (/faces/lawsearch)11,33%
Поиск по сайту1,44%
Статистика законодательной деятельности (/lawstat/)0,32%
Прямая трансляция заседаний (/livevideo.ram)0,28%
Обращение в ГД (letter_pr.html)0,09%

Далее мы учли в данном списке разделы нового сайта, которых ранее не было, но которые, как ожидалось, вызовут интерес у пользователей:

Страница% от общего числа
Всего запросов100,00%
Главная страница (/)46,10%
Страницы новостей (/news/)38,59%
Поиск по законопроектам (/systems/law/)11,33%
Страница/список депутатов (/structure/deputies/)1,72%
Блоги депутатов (/blogs/bogomolov/post/11/)1,62%
Поиск по сайту (/search/)1,44%
Статистика законодательной деятельности (/legislative/statistics/)0,32%
Прямая трансляция заседаний (/analytics/tv/livevideo.ram)0,28%
Обращение в ГД (/representative/addresses/leave/)0,09%

На основе данного списка было сформировано 8 сценариев посещения страниц пользователями, которые эмулировали бы естественную нагрузку на сайт при его реальной работе, а также подобрано их процентное соотношение так, чтобы суммарная статистика сходилась с данными приведенной выше таблицы. За верхний порог базовой нагрузки было взято 3 млн. хитов в сутки.

КодОписаниеЦепочка% от общего числаКоличество хитов
newsЧтение новости/
/news/273/26797/
36,91%1 107 300
deputyПоиск депутата через раздел Депутаты и просмотр страницы депутата/
/structure/deputies/
/structure/deputies/23501/
1,14%34 200
se_deputyПереход на страницу депутата из поисковика/structure/deputies/23501/
/
0,57%17 100
searchПоиск материала через Поиск по сайту и переход/
/search/
/news/273/26797/
1,44%43 200
law_searchПоиск по законопроектам: зашел на форму и посмотрел результаты поиска/
/systems/law/
/systems/law/
/systems/law/
5,67%170 100
addressОбращение граждан/
/representative/addresses/leave/
0,09%2 700
videoПросмотр видео-трансляции/
/analytics/tv/livevideo.ram
0,28%8 400
blogПереход на запись блога с rss/blogs/bogomolov/post/11/1,62%48 600
Всего хитов3 062 100

Все сценарии выполнялись в режиме неавторизованного пользователя.

Сценарийное тестирование проводилось с помощью средства jMeter.

Пиковая нагрузочная способность

Определение пиковой нагрузочной способности проводилось с помощью средства ab. Результаты тестирования в 1,5-2 раза превышают значения требований технического задания.

Комментарии

Категории

Облако тегов

Подписка

Для того, что бы получать информацию о свежих обзорах интернет-магазинов и новости отрасли, подпишитесь.
* — поля, обязательные для заполнения