.
13 января 2016

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

posted in Bitrix |

И ещё один полный репост, т.к. добавить особо нечего, а информация очень полезна и до сих пор актуальна т.к. вышел я на неё именно по запросам имени самой большой в базе Битрикса таблицы «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 процентов обращений в предел одной секунды.
Дробить по секундам — отличное решение (!).
Хочу отметить тот титанический труд, который проделали тестировщики.
Ну... а поскольку конфигурация сервера не указана точно (процессор и память не известны), то все последующие рассуждения не имеют смысла.

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

Источник

Яндекс.Метрика