Метка: Производительность
18 материалов

На проекте с растущим каталогом и историей заказов производительность сайта рано или поздно упирается не в PHP, а в базу данных. Разберём, как находить и устранять медленные запросы MySQL на сайтах 1С-Битрикс, не переписывая всю логику приложения с нуля. Включение лога медленных запросов # my.cnf slow_query_log = 1 slow_query_log_file = /var/log/mysql/slow.log long_query_time = 1 Лог медленных запросов фиксирует все запросы,…

Для чтения одного свойства одного элемента инфоблока в API есть несколько путей — и не все они одинаково эффективны. Разберём CIBlockElement::GetProperty в сравнении с GetList, и когда использование каждого из них оправдано. CIBlockElement::GetProperty <?php $result = CIBlockElement::GetProperty( $iblockId, $elementId, [‘sort’ => ‘asc’], [‘CODE’ => ‘COLOR’] ); while ($property = $result->Fetch()) { echo $property[‘VALUE’]; } Этот метод специализирован именно на получении…

Статические ресурсы сайта — изображения, CSS, JS — можно отдавать не с собственного сервера, а через сеть распределённых серверов CDN, физически ближе к посетителю. Разберём, как подключить CDN к сайту на 1С-Битрикс и на что обратить внимание при настройке. Что реально ускоряет CDN CDN снижает задержку загрузки статики за счёт физической близости сервера CDN к посетителю (меньше времени на прохождение…

Агенты в 1С-Битрикс — механизм отложенного и периодического выполнения кода, встроенный в ядро с самого начала. Разберём CAgent: как зарегистрировать агент, какие требования предъявляются к функции-обработчику и почему агент, забытый после отладки, может годами незаметно грузить сервер. Регистрация агента <?php CAgent::AddAgent( ‘syncStockBalances();’, // вызываемая функция как строка ‘my.module’, // модуль, к которому привязан агент ‘N’, // периодичность: N — по…

Выбор тарифа хостинга «на глаз» — частая причина либо переплаты за неиспользуемые ресурсы, либо, что хуже, нехватки мощности в самый неподходящий момент вроде рекламной акции. Разберём, как посчитать реальную потребность сайта на 1С-Битрикс в ресурсах сервера, а не гадать по названию тарифа. Что реально потребляет ресурсы Основные потребители вычислительных ресурсов Битрикса — PHP-FPM (обработка запросов) и MySQL (запросы к базе)….

Ошибка 503 Service Unavailable означает, что сервер временно не может обработать запрос, — в отличие от 500-й ошибки, это не всегда указывает на баг в коде. Разберём основные причины 503 на сайтах 1С-Битрикс и порядок диагностики от самых частых причин к менее очевидным. Перегрузка PHP-FPM или недостаток воркеров Самая частая причина 503 на нагруженном сайте — исчерпание пула доступных PHP-воркеров:…

CIBlockElement::GetList — самый частый источник тормозов на страницах с инфоблоками. Метод гибкий и прощает почти любой набор параметров, поэтому на нём легко написать код, который работает на тестовых 50 товарах и падает по таймауту на боевых 50 000. Разберём, какие параметры выборки решают проблему производительности. Базовый вызов и его цена <?php $result = CIBlockElement::GetList( [‘SORT’ => ‘ASC’], [‘IBLOCK_ID’ => 14,…

Инфоблоки 2.0 — обновлённая архитектура хранения данных элементов и разделов, пришедшая на смену классической структуре таблиц инфоблоков. Разберём, что реально меняется под капотом, когда стоит включать новую версию, а когда лучше остаться на классической. В чём принципиальное отличие от классических инфоблоков Классические инфоблоки хранят свойства элементов в универсальных таблицах значений свойств, общих для всех инфоблоков сайта, — это гибко, но…