![bitronic_256.png](https://site-cloud-files.bitrix.info/main/07b/07b3969a0fa76f39a9e4a0d41abf2640/bitronic_256.png)
Уже давно планировал написать этот пост, да все ждал – то, когда мы выпустим новый важный функционал, то, недоработок в решении, как мне казалось, было еще много, то, летний спад посещаемости вот настал.. В общем надоело мне ждать идеальный момент – пишу как есть, а позже буду дописывать.
С пол года назад, дабы уже как следует, по взрослому, нагрузить наше типовое решение
im24.ru – красноярский интернет-магазин бытовой и цифровой техники. Это наше флагманское внедрение, многий функционал и идеи решения выросли из этого сайта. Многие новые фичи мы тестируем и обкатываем тоже на нем. По сути
К слову:
Проект im24.ru был запущен в конце 2008 года.
В каталоге интернет-магазина представлен широкий ассортимент товаров всемирно известных брендов – всего более 150 товарных категорий! Это более 25000 товарных позиций, а следовательно и – более 150 страниц с фильтром и более 25000 детальных страниц товаров на сайте ! Покупки в интернет-магазине совершили уже более 10 000 красноярцев, которые оформили уже более 20 000 заказов! А ежемесячный оборот достигает 7 миллионов рублей. Посещаемость ресурса в отдельные дни доходит до 2500 уникальных посетителей и 12500 хитов в сутки .
Возможно, что позже я даже напишу отдельный пост, в котором опубликую бизнес-план открытия интернет-магазина бытовой и цифровой техники..
Сейчас же, я хочу подробно остановиться на нагрузочном тестировании решения проекта:
I. НА СТОРОНЕ СЕРВЕРА
Сайт работает на редакции продукта «Малый бизнес».
Посещаемость проекта в данный момент составляет ~500 уникальных посетителей в сутки и ~2500 хитов, скриншот:
![2013_08_18_1909.png](https://site-cloud-files.bitrix.info/main/ee3/ee34762b96d1e03c73e01726da2a7d3d/2013_08_18_1909.png)
На самом деле, это мало – сказывается летний период, а так же смена правил построения ЧПУ, которая привела к выпаду большого % страниц из поисковой выдачи.
Важное замечание: это без учета поисковых ботов – внешняя статистика их не считает, однако логи веб-сервера фиксируют, что различные боты ежедневно создают от 5000 до 20000 дополнительных хитов! Это огромная дополнительная нагрузка на веб-сервер!
Возможно, что позже я напишу отдельный пост о том как мы с этим боремся..
+Ежедневно происходит синхронизация с 1С Предприятие 8.2.
Хостинг
Сайт размещен на обычном shared-хостинге (не требует администратора!)
Смотрим что мы имеем сейчас по нагрузке, скриншот:
![2013_08_18_1918.png](https://site-cloud-files.bitrix.info/main/fa8/fa83022ed0d704b51e4b68a0abf9aad0/2013_08_18_1918.png)
Как видите, бывают отдельные эксцессы когда например приходится разом сбросить кэш у всех детальных страниц товара (обновить шаблон bitrix:catalog.element) чтобы например добавить какие-нибудь кнопки, а страниц на сайте напомню – более 25000! Или один из поисковых ботов начинает чрезмерную активность и с этим приходится бороться.. Или менеджер через чур активно начинает обновлять цены товаров выгружая их из 1С Предприятие, что так же приводит к сбросу управляемого кэша страниц.
Но, в целом, как видите, все последние 5 лет – сайт вполне укладывается в выделенные на на данном тарифном плане лимиты по процессорному времени и оперативной памяти.
Исключение составляет месяц декабрь, когда предновогодний ажиотаж приводит к резкому увеличению посещаемости сайта в разы! В предыдущие годы мы даже на 1 месяц переводили сайт на боле дорогой тарифный план – Premium. Но, к сожалению, в этом году аппаратные лимиты этого тарифного плана хостер урезал до лимитов текущего тарифа и вроде как запретил смену лишь на 1 месяц. Жаль – в декабре 2013г. нам придется рассматривать другие варианты, скорее всего облачные..
При этом, посмотрите, пожалуйста, производительность веб-сервера, которую нам дает хостер на данном сервере, скриншот:
![2013_08_18_1930.png](https://site-cloud-files.bitrix.info/resize_cache/694680/04dbd6b4c314fe48f655aad84339ad15/main/6f4/6f4c8f99e00328bb288d208a8a7454a9/2013_08_18_1930.png)
Не супер-пупер конечно, но близкая к эталону..
Итого, мы имеем сайт работающий на ПО 1С-Битрикс редакции «Малый бизнес» типовом решении «Битроник» состоящий из более чем 25000 страниц, с о средней посещаемостью 1000 уникальных посетителей в сутки, который хостится на простом хостинге не требующем администратора – за 700р. в месяц.
Для того чтобы добиться таких результатов мы провели тщательный аудит Битроника при помощи встроенного в 1С-Битрикс инструментария -- Монитор производительности и добились того, чтобы в решении не было ни одной ошибки разработки, скриншот:
![2013_08_18_1947.png](https://site-cloud-files.bitrix.info/resize_cache/694681/04dbd6b4c314fe48f655aad84339ad15/main/7d9/7d921b8aaf149b5b2c935a58f5d137c4/2013_08_18_1947.png)
Исключения составляют два стандартных компонента с запросами к БД:
1. остался запрос на генерацию CAPTCHA стандартным компонентом формы обратной связи bitrix:main.feedback, который кэшировать нельзя, но позже мы сделаем эту форму подгружаемой через AJAX и
2. запрос стандартным компонентом корзины bitrix:sale.basket.basket.small, который смотрит в БД какие товары лежат в ней у конкретного Гостя.
А самую большую нагрузку сейчас создает стандартный компонент «Умный фильтр» bitrix:catalog.smart.filter результат работы которого, как я понимаю кэшировать не удастся, ведь если мы создадим кэш с шагом в 1 рубль и для всех комбинаций параметров – это переполнит кэшем любое отведенное хостером место на диске..
Еще раз подчерну, что выбранная
Замеры скорости генерации страниц на сервере основных страниц сайта:
Главная страница:
![2013_08_18_1958.png](https://site-cloud-files.bitrix.info/main/b77/b77b157f1a185520fe5545c6f553c617/2013_08_18_1958.png)
Список товаров вид список:
![2013_08_18_2005.png](https://site-cloud-files.bitrix.info/resize_cache/694684/04dbd6b4c314fe48f655aad84339ad15/main/629/629f0ef60fe63c1c55f787c57804e95f/2013_08_18_2005.png)
Список товаров вид таблица:
![2013_08_18_2007.png](https://site-cloud-files.bitrix.info/resize_cache/694685/04dbd6b4c314fe48f655aad84339ad15/main/eb0/eb04f6ef45bf9e651a2278eb572c0e4c/2013_08_18_2007.png)
Список товаров вид плитка:
![2013_08_18_2009.png](https://site-cloud-files.bitrix.info/resize_cache/694686/04dbd6b4c314fe48f655aad84339ad15/main/e2f/e2f43e0c7d3546d4a8e85bc6781d79b1/2013_08_18_2009.png)
Детальная страница товара:
![2013_08_18_2011.png](https://site-cloud-files.bitrix.info/resize_cache/694687/04dbd6b4c314fe48f655aad84339ad15/main/6c8/6c8d870fba306c9f567b035662f5e62f/2013_08_18_2011.png)
Как видите – скорость генерации страниц, с работающим автокэшированием, по сайту редко когда превышает 0,2-0,5 секунды. И здесь я считаю мы уже поработали хорошо.
II. СКАЧИВАЕМ СТРАНИЦУ
Далее сгенерированную веб-сервером страницу должен скачать ваш браузер. Мой FireFox 22.0 со всем содержимым выкачивает ее за ~6 секунд, скриншот:
![2013_07_25_0944.png](https://site-cloud-files.bitrix.info/resize_cache/694690/04dbd6b4c314fe48f655aad84339ad15/main/7ce/7ce6c9c4af6778daae75a9481c6f57a7/2013_07_25_0944.png)
Замечание тут следующие:
1. К сожалению, на данный момент Таймвеб не всегда кэширует "Ускорение сайта CDN" Обсуждалось
UPDATE 27 августа 2013 года:
Владелец магазина добился от хостера исправления ошибки в настройках веб-сервера и теперь вся статика попавшая в CDN кэшируется правильно. За что, хостеру конечно -- спасибо.
Однако, при заходе клиентов из Красноярска (а это основная целевая аудитория данного интернет-магазина) мы видим, что вся статика отдается нам с московских серверов (напомню, что серверы хостера территориально находятся в Санкт-Петербурге), скриншот:
![777.png](https://site-cloud-files.bitrix.info/resize_cache/699172/04dbd6b4c314fe48f655aad84339ad15/main/72b/72b33b92c6aa3e6123917b67f3631a76/777.png)
Видя IP-адерс (например 91.238.111.146) это легко определить с помощью например сервиса:
Непонятно, почему не из Красноярска или не из хотя бы Новосибирска????
Ответ ТП 1С-Битрикс:
Наиболее оптимальный маршрут определяется автоматически по разным показателям. Алгоритм определения маршрута мы вам сказать не можем. |
Хотя, судя по карте покрытия --
UPDATE 28 августа 2013 года:
Необъяснимо, но факт!
Сегодня вся статика сайта, для красноярских пользователей, стала отдаваться с IP-адреса:
IP 93.92.71.147 Хост: 93.92.71.147 Город: Красноярск Страна: Russian Federation IP диапазон: 93.92.64.0 - 93.92.71.255 Название провайдера: JSC Webra |
![С улыбкой :)](/upload/main/smiles/3/bx_smile_smile.png)
![Шутливо ;)](/upload/main/smiles/3/bx_smile_wink.png)
UPDATE 5 декабря 2013 года:
Мы перевели подгрузку табов со спецблоками (новинки, хиты, разпродажа, бестселлеры) на AJAX. Таким образом их нет в DOM-структуре страницы изначально и на сервере изначально выполняется только 1 компонент из 4-х. Остальные выполняются и отображают содержимое непосредственно при клике.
Так же мы переведи на AJAX форму обратной связи в шапке сайта. Ранее она подгружалась на каждом хите хотя и не была видна пользователю, но в DOM присутствовала, а кроме того она генерировала CAPTCHA на каждом хите... Сейчас форма подгружается через AJAX только при непосредственном ее вызове.
Делаем замеры:
a. Браузер полностью закэшировал сраницу -- жмем Enter в адресной строке браузера для обновления (1,43 сек.)
![111_q.png](https://site-cloud-files.bitrix.info/resize_cache/757013/04dbd6b4c314fe48f655aad84339ad15/main/403/403041ec3a57163c6e221186dcbf6bb7/111_q.png)
b. Обновляем страницу через F5 (2,6 сек.)
![222_q.png](https://site-cloud-files.bitrix.info/resize_cache/757011/04dbd6b4c314fe48f655aad84339ad15/main/d8e/d8ef6307033923bd697751613b05bf04/222_q.png)
c. Сбрасываем кэш через Ctrl+F5 (5,07 сек.)
![333_q.png](https://site-cloud-files.bitrix.info/resize_cache/757012/04dbd6b4c314fe48f655aad84339ad15/main/bfb/bfb3b48098a3213e8ea8464edb06c44c/333_q.png)
2. Кроме статики самого сайта, скачиваются еще и всяческие «свистелки»: вконтакте, фейсбук, счетчики гугл.аналитикс и яндекс.метрика, различные другие партнёрки вроде: orphus и reformal итд -- это все так же дает какие-то секунды. Если нужно больше скорости – все это лучше отключить.
3. На данный момент отключена стандартная опция 1С-Битрикс объединения и сжатия всех js и css файлов — мы еще тестируем ее корректную работу с нашим решением и планируем включить ее в ближайшее время.
На данном этапе, еще есть резерв ускорения за счет более тонкой настройки Хостинга, объединении файлов + по желанию отключение партнерок..
UPDATE 27 августа 2013 года:
Продолжаем тестировать опции:
Объединять JS файлы,
Создавать сжатую копию объединенных CSS и JS файлов.
По результатам тестирования найден один недочет в 1С-Битрикс и создана заявка в их отдел разработки.
Комплекс мер на этапе II уже позволил отвоевать целую секунду только за счет включения стандартных опций 1С-Битрикс, скриншот:
![666.png](https://site-cloud-files.bitrix.info/resize_cache/699191/04dbd6b4c314fe48f655aad84339ad15/main/6ae/6aefe05613f5a9e64c4c172263c6db09/666.png)
UPDATE 30 апреля 2014 года:
Включили в решении работу в "композитном режиме". На скриншоте вся статика сайта уже в кэше браузера -- DOM главной страницы сайта отдается всего за 76мс (ранее было около ~400)
![composit.png](https://site-cloud-files.bitrix.info/resize_cache/842814/04dbd6b4c314fe48f655aad84339ad15/main/e8e/e8ecc0e10e2b4d026d245edf1a35399c/composit.png)
в композитном режиме уже работает: главная страница сайта, страницы списка товаров (3 вида), из-за того что детальная страница товара в Битронике оканчивается на .html -- режим композита на ней пока не включается (создано обращение в ТП 1С-Битркис, ждем решения этого вопроса.)
III. НА СТОРОНЕ КЛИЕНТА
Браузер должен произвести рендеринг скаченной страницы. Это так же занимает некоторое время. В нашей верстке используются самые передовые технологии: CSS3 и HTML5, jQuery для реализации различного функционала (в то числе AJAX.) Чем современнее и мощнее ПК посетителя, чем новее версия его браузера -- тем рендеринг страницы происходит быстрее.
Мы еще подбираем инструменты для замеров скорости работы Java Script. В целом здесь я еще вижу большой потенциал для будущего ускорения за счет оптимизации кода Java Script и различных CSS+HTML конструкций.
ВЫВОДЫ
Многие авторы критиковали выбранную нами архитектуру товарного каталога на основе множества инфоблоков, дескать, зачем нужны такие сложности итд. Покажите нам другое типовое решение Маркетлейс с более чем 150 товарных категорий с собственными уникальными свойствами в фильтре каждая (причем все это работает на стандартных компонентах), с более чем 25000 детальных страниц товаров, которое будет хоститься на shared-хостинге (не требующем администратора) за 700р в месяц при средней нагрузке в 1000 уникальных посетителей в сутки? То-то же!
Хотите быстро запустить реально работающий продающий прибыльный интернет-магазин цифровой и бытовой техники – выбирайте
UPDATE 27 августа 2013 года:
После публикации данного отчета, несколько клиентов написало нам:
-- Боже! Боже! Целых 6 секунд на скачивание и генерацию страницы! Это чудовищно! Должно быть меньше одной секунды. Ведь, каждые 0,1 секунды это -1% конверсии!
Ребята, давайте будем реалистами, вот несколько замеров на популярных магазинах (это второй хит -- вся статика уже в кэше):
![eldorado.png](https://site-cloud-files.bitrix.info/resize_cache/699208/04dbd6b4c314fe48f655aad84339ad15/main/410/41076e739f920b682f1579363cb151ff/eldorado.png)
![ulmart.png](https://site-cloud-files.bitrix.info/resize_cache/699209/04dbd6b4c314fe48f655aad84339ad15/main/ebf/ebf5f837387100e6af253888f35cf177/ulmart.png)
![ozon.png](https://site-cloud-files.bitrix.info/resize_cache/699210/04dbd6b4c314fe48f655aad84339ad15/main/929/9297e65d27c91fdfcafe94d4461f1d59/ozon.png)
![sotmarket.png](https://site-cloud-files.bitrix.info/resize_cache/699211/04dbd6b4c314fe48f655aad84339ad15/main/726/726bf76a40e4ac17946b132383823a47/sotmarket.png)
Ну и если кто-то из коллег видит еще узкие места и знает как сделать еще быстрее -- мы с удовольствием обсудим эту тему, она нам очень интересна!
![С улыбкой :-)](/upload/main/smiles/3/bx_smile_smile.png)