Битрикс и нагрузочные тесты


И ещё один полный репост, т.к. добавить особо нечего, а информация очень полезна и до сих пор актуальна т.к. вышел я на неё именно по запросам имени самой большой в базе Битрикса таблицы «b_stat_path_cache» заинтересовавшей меня своим огромным размером.

Далее от Автора:

Перебирая золотых и платиновых партнеров CMS Битрикс, наткнулся на замечательный сайт qsoft.ru. На этом сайте я нашел милую статью «Нагрузочное тестирование». Хвала и уважение авторам статьи (за честность).

Собственно, как и признаются авторы статьи ниже заголовка это совсем не тестирование, а оптимизация Битрикса, попытка тем или другим способом уложить статистику в приемлимые пределы.   Дальше только цитаты…

=======================================
В целях сокращения времени на обращения к СУБД было включено кэширование всех компонентов на тестируемых страницах демосайта.

Вначале была выполнена стандартная настройка конфигурации frontend/backend, согласно рекомендациям С.Рыжикова в сертификационном курсе «Конфигурирование веб-систем для оптимальной работы».

движок хранения данных MyISAM является «узким местом» при более менее реальной нагрузке, в особенности при использовании модуля «Статистика» — сайт начинает виснуть

1С-Битрикс рекомендует отключение параметра: innodb_flush_log_at_trx_commit=0 чего разработчики MySQL, однако, не советуют делать.  <…> На тестируемой конфигурации данные параметры были отключены.

Были протестированы наиболее распространенные прекомпиляторы: xcache, APC, eaccelerator. К сожалению, ВСЕ прекомпиляторы через некоторое время после начала нагрузки демосайта 1С-Битрикс «Бизнес» вызывали «падение» дочерних процессов вебсервера apache — «Segmentation fault». <…>

Вот что мы делали, пытаясь предотвратить сбои в работе прекомпиляторов:
    * перекомпилировали PHP, прекомпиляторы без режима оптимизации: –O0;
    * меняли версию gcc с 4.1 на 3.3;
    * увеличивали ulimits, меняли параметры ядра Linux;
    * перебирали настройки прекомпиляторов, настройки конфигурации компиляторов в PHP (./configure …);
    * убирали из конфигурации PHP «лишние» модули. <…>

В общем, «лезть» в исходный код прекомпиляторов мы не решились и обошли проблему с другой стороны – написали простой bash-скрипт, отслеживающий появление в логе apache сообщений «Segmentation fault» и перегружающий apache.
// Слезы умиления…

В итоге, примерно через 8 часов процессоры использовались практически на 100%, нагрузка (load average) поднималась до 10 и выше, а система начинала использовать swap – производительность падала фактически до 0. Нагрузочное тестирование приходилось останавливать.
// Я уже рыдаю

Далее были обнаружены «тормозящие» запросы к таблице b_stat_path_cache, лавинообразно накапливающиеся через несколько часов нагрузки; при этом размер таблицы иногда вырастал до 1ГБ. Проблема была решена отключением настройки модуля «Статистика»

Таблица «Распределение времени загрузки страницы»

Критерий Значение %
Меньше либо равно 1 сек. 1572073 98,63
Больше 1 сек. 21910 1,37

=========================
Мои выводы.
Оптимизаторам была поставлена задача  уложить 98 процентов обращений в предел одной секунды.
Дробить по секундам — отличное решение (!).
Хочу отметить тот титанический труд, который проделали тестировщики.
Ну… а поскольку конфигурация сервера не указана точно (процессор и память не известны), то все последующие рассуждения не имеют смысла.

Ну а для тех, кто ничего в этом не понимает подготовил краткое изложение вышесказанного:
Битрикс — (говорят) удобная красивая система для управления сайтом. Но за красоту надо платить (да и кушать тоже хочется, раз написали — надо продавать). Однако сайты, построенные на этой системе, вызывают головную боль для хостинг-провайдеров. Без обработки напильником сайты работают медленно и вводят в ступор весь сервер…. А у нас нет отдельного специалиста под Битрикс… Рекомендуете?

Источник


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *