1С-Битрикс: Управление сайтомНа главную страницу
Клиентам
Маркетплейс
Партнерам
Разработчикам
Интеграция с 1С
Идея?


Личный кабинет
Авторизоваться
Регистрация
(войти) Корзина
Логин:

Пароль:



Забыли свой пароль?
Регистрация
Войти как пользователь:
Войти как пользователь
Вы можете войти на сайт, если вы зарегистрированы на одном из этих сервисов:
ВКонтакте
Мой Мир
Twitter
Facebook
Google
Livejournal
Яндекс
Rambler
Mail.Ru
Liveinternet
Blogger
OpenID
Используйте вашу учетную запись VKontakte.ru для входа на сайт.
Используйте вашу учетную запись Мой Мир@Mail.ru для входа на сайт.
Используйте вашу учетную запись на Twitter.com для входа на сайт.
Используйте вашу учетную запись на Facebook.com для входа на сайт.
Используйте вашу учетную запись Google для входа на сайт.
.livejournal.com
@yandex.ru
@rambler.ru
@mail.ru
http://www.liveinternet.ru/users/ /
.blogspot.com
OpenID:
  • Документация
    • Управление сайтом
    • Корпоративный портал
    • .NET Forge CMS
    • Отраслевые решения
    • Marketplace
    • Аренда приложений (SaaS)
  • Обучение и сертификация
    • Онлайн-курсы и сертификация
    • Учебные центры
    • Мое обучение
    • Учебные видеоролики
  • Центр поддержки
    • Поддержка
    • FAQ
    • Мои обращения
  • Сообщество
    • Блоги Битрикс
    • Блоги веб-разработчиков
    • Общие форумы
    • Веб-разработчики
      • Моя страница
      • Мои сообщения
      • Группы
      • Найти коллег
  • Cтатьи
    • Архив
Главная / Общение / Сообщество разработчиков / Петров Роман / Блог
Федеральный семинар «1С-Битрикс»: Веб для бизнеса

Нагрузка на аккаунт на серверах Timeweb: пример успешного снижения

Профиль
Друзья
Группы
Форум
Блог
Микроблог

Петров Роман

Дата последнего входа: 16.05.2012 20:02:58
Город: Новосибирск
Наименование компании: ООО Ай Ти Констракт

Нагрузка на аккаунт на серверах Timeweb: пример успешного снижения

13
Петров Роман
23.11.201120:5923.11.2011 20:59:25
Наверное, все знают, что один из лучших хостеров для 1С-Битрикс - это Timeweb Очень много как партнеров 1С-Битрикс, так и просто сайтов работают на этом хостинге.

Для моей компании Timeweb в настоящее время является основным хостинг-партнером - у нас размещено на нем более 220 аккаунтов клиентов. Мы работаем с Timeweb в режиме интегратора и не скрываем для наших заказчиков, что хостинг предоставляет именно Timeweb, а мы являемся только агентами.

В целом линейка тарифов у Timeweb достаточно сбалансирована до определенного уровня - пока сайт не начнет генерировать высокую нагрузку на тариф Eterno[B]. После этого владельцу сайта необходимо либо переходить на Premium тариф, либо выбирать VPS а затем выделенный сервер. Как правило, это случается всегда неожиданно и владелец сайта психологически не готов платить после 825 рублей/месяц например, 4000 рублей/месяц.

В последнее время многие партнеры 1С-Битрикс высказывают нарекания в сторону Timeweb из-за "неожиданного" и "необоснованного" роста нагрузки на аккаунты клиентов. Несомненно, бывает всякое, однако, хочу поделиться нашим опытом снижения нагрузки на достаточно крупный интернет-магазин.


Итак, в сентябре 2011 мы запустили проект для одной из ведущих региональных компаний на российском рынке информационных технологий - компании НЭТА. Все было хорошо, нагрузка на сервер была совсем маленькой  - в октябре 2011 нагрузка на процессор колебалась от 100 до 200 единиц, а нагрузка на базу - менее 30 единиц. И как вдруг раз - и со 2-го ноября нагрузка на базу резко возрастает - до 20 000 единиц!

Первая реакция - "Что случилось?" и "Так не может быть! Это сбой подсчета статистики!". Думаю, что такая реакция была бы у любого разработчика.
Естественно, что первым делом мы подумали, что выросла посещаемость. Но нет - прирост был не очень значительным, и это не должно было сильно повлиять. Вторым - что Timeweb ошибается. Здесь важно рассказать о том, как считается нагрузка на аккаунт.

Для мониторинга за нагрузкой CPU используются данные утилиты sa. В качестве показателей нагрузки mysql используется процессорное время, затраченное за выполнение sql-запроса (используются percona'вские версии mysql)

Предположение, которое сразу же высказал нам Timeweb - что нагружает импорт - требовалось проверить. После обсуждения директор Timeweb, Дмитрий Тарасов, сделал нам предложение, от которого сложно было отказаться - выделил нам на время тестирования отдельный сервер, на котором мы могли бы проверить все свои предположения. Сервер был настроен также, как и стандартный хостинг-сервер, и у нас были те же самые права. Т.е. у нас не было паролей от root (ни от сервера, ни от MySQL).

Сначала мы решили проверить, не вызван ли рост нагрузки тем, что на старом сервере другие аккаунты стали "есть" больше ресурсов и в результате у всех выросла нагрузка. Увы (или к счастью) это не так, и статистика Timeweb действительно не зависит от загрузки сервера.

Далее наступила очередь импорта-экспорта данных. Сайт очень активно обменивается данными с 1С, и, как мы понимаем теперь, скорее всего в ноябре объем реально обмениваемых данных резко вырос.
Оптимизация скриптов импорта позволила выявить несколько мелких и часто незаметных ошибок:
- выполнение запроса в цикле
- выборка по неточному совпадению (в паре мест использовался Like вместо точного совпадения)
В результате загрузка была снижена в более чем 5 раз!

Дополнительно, мы включили в импорт проверку на изменение данных. Теперь, если данные не изменились, система не обновляла их.
Это позволило снизить нагрузку еще сильнее. Итоговая нагрузка на MySQL снизилась более чем в 10 раз!


Красный - нагрузка на MySQL до оптимизации
Синий - после устранения недочетов импорта
Зеленый - после доработки импорта (убрали обновление неизмененных данных)

Дополнительно мы решили оптимизировать загрузку страниц. Важно отметить, что проект непростой - у компании несколько городов с несколькими магазинами в каждом городе. Цена на товар зависит от города, а наличие в городе зависит от наличия в магазинах. В итоге на вид простая главная страница генерировала достаточно много запросов к базе данных (когда был хит мимо кэша). Оптимизация кэширования и работы компонентов позволила выиграть от 30 до 50% скорости загрузки страниц, и, хотя это и было необязательно, это снимет много потенциальных проблем в будущем.

Результат оптимизации страниц:

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

Результат борьбы с нагрузкой вы можете увидеть на рисунке:


На графике хорошо виден всплеск нагрузки на MySQL в начале ноября и последующий спад в зеленую зону после оптимизации. Падение нагрузки на CPU в крайнем справа значении графика - это из-за переноса на другой сервер (сбросилась статистика).

В целом по результату оптимизации мы сделали такие выводы:
1. Для интернет-магазинов в стоимость включать проверку не только под нагрузкой на посещаемость, но и уточнение объемов и частоты обмена данными
2. Механизмы расчетов, которые изучаются в курсе "Численные методы" в университете, нужно применять и в вебе. Пока сайт маленький или данных немного - работает любой способ. Затем, при росте объема данных, рост нагрузки может стать квадратичным из-за маленькой ошибки в вызове скрипта (например, где-то стоит маленький полный перебор).
3. Статистика Timeweb не врет.
4. Теперь у нас есть администрируемый Timeweb сервер со спецтарифами для "тяжелых" клиентов.

Важно отметить еще несколько вещей, которыми я руководствовался при принятии решений:
1. VPS и сервер в Германии - не панацея. Связано это с необходимостью администрировать сервер и VPS. Я являюсь поклонником shared хостинга, потому что в этом случае за нашими сайтами следят профессионалы. И они быстрее заметят проблему, потому что это - их работа.
В случае VPS или своего сервера затраты на администратора будут очень значительными.
2. Сами мы хостингом заниматься не хотим. Это очень дорого и требует значительных вложений, прежде всего в сотрудников - администраторов и поддержку.

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

Благодарности:
Дмитрию Тарасову, директору Timeweb, за помощь в решении сложной ситуации.
Петров Роман
23.11.201120:5923.11.2011 20:59:25
Просмотров:3074 Комментариев:31 13
Теги: timeweb, timeweb.ru, производительность
0
Серж
23.11.2011 21:29:52
К первой строке поста я бы добавил "был когда-то"...
Ссылка 0
1
Петров Роман
23.11.2011 21:34:01
А альтернатив-то по-прежнему ведь нет, правильно?
Родитель Ссылка 1
1
Остроумов Александр
23.11.2011 21:46:22
ну по производительности Таймвеб хорош. По стабильности - не очень. То и дело мне приходят от яндекс.метрики сообщения  недоступности сайтов. Раз в полгода стабильно умирает на несколько часов из-за какой-нибудь аварии. Думаю, что это проблемы роста - не хватает рук всё контролировать, вот и сыпется. Но сам я там уже года два, всех своих клиентов стараюсь туда переводить сразу, чтобы из-за дурацкого хостинга на свебе или hc.ru не было претензий ко мне, что сайт умер.
Родитель Ссылка 1
0
Сергей Рыжиков
23.11.2011 21:48:13
Отличный пост!
Ссылка 0
0
Яковенко Дмитрий
24.11.2011 13:51:22
Сергей, Роман, правильно написал, что механизм обмена с сайтом на данный момент тяжелая процедура, Вы не рассматриваете возможность ее доработки?
Родитель Ссылка 0
0
Роман Забродин
24.11.2011 06:33:42
Отличный пост и очень своевременный!

На разработанных нами интернет-магазинах сейчас в канун нового года наблюдается сезонный взрыв посещаемости (рост в 2-4 раза) и продаж.
Соответственно наблюдается нагрузка на сервер хостера.

Цитата
Оптимизация скриптов импорта позволила выявить несколько мелких и часто незаметных ошибок:
- выполнение запроса в цикле
- выборка по неточному совпадению (в паре мест использовался Like вместо точного совпадения)
В результате загрузка была снижена в более чем 5 раз!
Вы используете стандартный обмен с 1С ? Если он действительно может нагружать хостера в 5 раз меньше, то Битрикс должен в срочном порядке ввести правки в свои скрипты и выпустить обновления! Так как до 25% нагрузки на сервер хостера это именно обмен с 1С.

Роман, нагрузку определяют посещаемость и количество страниц сайта, поделитесь этой информацией по данному проекту?
Ссылка 0
0
Петров Роман
24.11.2011 07:25:05
конечно, это НЕСТАНДАРТНЫЙ обмен с 1С.
Стандартный не умеет то, что требовалось заказчику.
Родитель Ссылка 0
0
Роман Забродин
24.11.2011 07:49:36
Слава Богу! А то напугали smile:-)
Родитель Ссылка 0
0
Петров Роман
24.11.2011 08:25:37
Но, по мнению наших разработчиков, если бы мы использовали стандартный обмен, то сервер бы просто не успевал его осуществлять.
Такие дела.
Родитель Ссылка 0
1
Нейман Андрей
24.11.2011 08:45:39
Стандартный тормозит из-за своей же гибкости и универсальности. Если его несколько кастомизовать под конкретную задачу, можно добиться не десятикратного, но всё же существенного прироста скорости работы. Значительного ускорения можно добиться лишь отказом от использования большинства api-вызовов и прямыми обращениями в БД
Родитель Ссылка 1
0
Роман Забродин
24.11.2011 07:08:35
Внесу свой вклад в пост Романа добавив немного нашей статистики:

Красноярский интернет-магазин
~1000 уникальных посетителей в сутки
~3000 хитов в сутки
ежедневно из 1С выгружается порядка 18000 товаров (каждый имеет свою страницу на сайте)

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



Нам интересно экспертное мнение коллег, адекватна ли нагрузка на сервер хостера оказываемая проектом при известных вводных данных?
Ссылка 0
0
Остроумов Александр
24.11.2011 07:12:26
у меня чуть меньше нагрузка, но на площадке 4 сайта, один из них тяжелый аж пипец - 25 гб занимает, в инфоблоках порядка 100 тысяч разных записей, примерно столько же картинок всяких, а трафик всего 700 уников / 4500 хитов в сутки. Я борюсь с этой нагрузкой и вижу, что есть перспективы для ее снижения в разы, только вот руки не доходят сделать, проекты-то свои.
Родитель Ссылка 0
0
Петров Роман
24.11.2011 07:23:35
а как часто импорты делаются? и формат обмена данными - xml?
Родитель Ссылка 0
1
Петров Роман
24.11.2011 08:26:40
В общем, мне кажется что у вас два варианта - либо уходить на бОльший тариф или vps/выделенный сервер, либо брать деньги за оптимизацию нагрузки
Родитель Ссылка 1
0
Роман Забродин
24.11.2011 10:10:00
Если вопрос был ко мне, то:
для обмена сайта с 1С Предприятие 8.2 используется стандартный модуль битрикс (т.е. — XML).
Периодичность для всех товаров — раз в сутки.
Сегодня сменили тарифный план на Премиум, когда новогодний ажиотаж спадет — перейдем обратно на Eterno[B].
Родитель Ссылка 0
0
Роман Забродин
28.11.2011 10:49:26
Роман, а что вы подразумеваете под "оптимизация нагрузки"? Мне кажется что это стандарт качества и брать дополнительные деньги за это нельзя.
Родитель Ссылка 0
0
Нейман Андрей
28.11.2011 11:25:24
Невозможно создать бесконечно оптимизированную систему под любые нагрузки, можно лишь заложить запас прочности на некоторые отклонения. И дотянуть систему под конкретные ресурсы в случае их перерасходования. Если же реальная нагрузка в разы превышает номинальную заявленную в ТЗ (например, через месяц после запуска заказчик решил выгружать не 5000 товаров, а 50000), то это уже мало относится к некоему гарантийному случаю и надо искать некий компромисс.
Родитель Ссылка 0
0
Роман Забродин
28.11.2011 11:33:31
Андрей, то есть вы в ТЗ закладываете некоторые параметры при, которых сайт обязан работать на выбранном тарифном плане? Количество хитов, количество выгружаемых товаров?

Спрашиваю, потому что для нас это проблема очень актуальна -- при возникновении проблем на сайте мы оптимизируем его бесплатно (так как считаем, что например настройка автокэширования итд, это вопрос качества) в результате несем большие издержки..
Родитель Ссылка 0
1
Тарасов Дмитрий
24.11.2011 09:09:27
Роман, спасибо за пост. Недаюсь, что ваше авторитетное мнение и опыт прояснят ситуацию и помогут с решением вопросов нагрузки.
Ссылка 1
0
Сучков Алексей
24.11.2011 10:16:42
Было бы здорово, если бы вы в следующей статье описали нестандартный функционал взаимодействия 1с и битрикс в данном интернет магазине, очень интересно.
Ссылка 0
0
Петров Роман
24.11.2011 11:35:15
Увы, это уже намного сложнее
1. сам импорт содержит механизмы, которые могут быть отнесены заказчиком к его коммерческой тайне
2. как следствие, в импорте много специфики, которую тяжело тиражировать


Если вкратце - импорт происходит на основе CSV файлов, с определенной периодичностью. Обмен заказами возможен в обе стороны (изменения в заказе в 1С также выгружаются на сайт, в том числе состав заказа может изменяться). Обмен остатками и ценами происходит отдельно и намного чаще, чем обмен номенклатуры. Инфоблоки создаются "на лету". и много всяких других штук.
Родитель Ссылка 0
0
Мамаев Дмитрий
24.11.2011 11:08:26
Пост хороший, спасибо.
А вот работа Таймвеб последние пару месяцев вызывает множество нареканий... минут 15-20 сайт показывает 502 ошибку примерно раз в два-три дня smile:(
Ссылка 0
0
Семочкин Михаил
24.11.2011 11:14:12
Цитата
скорее всего в октябре объем реально обмениваемых данных резко вырос
А удалось выяснить, по какой причине?
Ссылка 0
0
Петров Роман
24.11.2011 11:35:48
запустился на полную мощность.
Родитель Ссылка 0
0
Сербул Александр
24.11.2011 13:53:12
Спасибо за статью, Роман! Очень ценная практическая информация. Также увидели, как встроенные инструменты платформы помогают для снижения нагрузки. Чеклист контроля качества - помогает при оптимизации под нагрузку?
Ссылка 0
0
Петров Роман
24.11.2011 14:20:30
сейчас сайт работает на версии 10.0.8, на время выяснения с производительностью мы не обновляли сайт. Чуть позже обновим и проверим.
Родитель Ссылка 0
0
Воробьев Денис
29.11.2011 17:59:52
Спасибо, Роман! Тоже столкнулись с тем, что пришлось писать свой импорт остатков и цен.

Раньше выгружали и через CSV и прямыми запросами - действительно, все работает гораздо быстрее и нагрузку почти не дает. Потом решили сделать все стандартными средствами и получили кучу проблем - 1С обновляется из сторонней БД раз в час, после чего происходит полная выгрузка: около получаса, сайт просто замирает (VPS)/

Так что, со стандартными модулями нужно быть поаккуратней - знать объем выгрузки на данный момент и в перспективе, частоту обновления, знать про  обновление 1С из сторонних источников...

А вообще, Роман, все, что вы описали - круто! Молодцы!
Ссылка 0
0
Роман Забродин
01.12.2011 09:26:08
Ребята, я теперь от вас не отстану. Поделитесь скриншотом нагрузки на CPU и MySQL хостера? Падение сохранилось в течении следующей недели или резкое падение нагрузки 22 числа было обусловлено случайностью (смена сервера итд) и было разовым ?
Ссылка 0
1
Петров Роман
01.12.2011 09:39:17
Резкое падение нагрузки на CPU - следствие сброса статистики при переносах на другой сервер.
Нагрузка на CPU при полноценном, активном импорте - около 200
Родитель Ссылка 1
1
Нейман Андрей
01.12.2011 09:50:58
Сейчас это выглядит так (24 числа был перенос на другой сервер):

Родитель Ссылка 1
1
Петров Роман
01.12.2011 10:03:06
а, даже еще меньше получилось.
кстати!
http://www.itconstruct.ru/about/news/5137/ - мы приобрели у таймвеб сервер для наших клиентов с большими нагрузками

Родитель Ссылка 1

Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».
 
Технологии Эрмитаж
BitrixMobile
Автокеширование
SiteUpdate
Производительность Виртуальная машина
Веб-окружение
Результаты тестов
Выбрать хостинг
Веб-кластер
Безопасность Проактивная защита
Веб-антивирус
Аутентификация

Контакты Поиск Карта сайта
Телефон: +7 (495) 229-14-41
Оставайтесь с нами: Facebook Twitter Habrahabr VKontakte Developers Google 1+
Как распознать QR код?Контакты QR


© 2001-2012 «Битрикс», «1С-Битрикс». Работает на 1С-Битрикс: Управление сайтом.
Английская версия Немецкая версия