Как увеличить файловых операций в секунду битрикс
Как увеличить производительность сайта в облаке
Гуру, обьясните "на пальцах"! У меня (пока) теоретический вопрос! Есть проект на дешевом.
Увеличить производительность gzip
Здравствуйте! gzip-аю так: public static byte gzip(String content) < byte bytes =.
Увеличить производительность программы
Вкратце, у меня есть программа, она работает с большим количеством информации, мне необходимо.
Как увеличить производительность
Докупал кингстон 2ГБ, тоже 1333МГц. Какую нужно докупить планку а может лучше две чтобы повысить.
Вы ставили окружение битрикс?
Замер проводили на демо сайте или уже на своем проекте. Если на своем проекте - проверьте содержимое init.php. Он ввыполняется на каждом хите и влияет на эту оценку. Может у вас там "беда".
Добавлено через 1 минуту
Показатели mysql у вас хорошие, кстати. Сами настраивали? Не поделитесь my.cnf ?
Добавлено через 9 минут
С файловой системой как то грустно у вас. У меня тариф (правда у другого хостера) более бюджетный, но показатель лучше.
Как вариант. На других хостингах можно взять тестовый период - развернуть там тот же проект и посмотреть.
Я так понял виртуализация у вас OpenVZ. Попробуйте найти с kvm.
Окружение не ставил, так как стоит Debian, а переустанавливать ОС - это слишком много затрат.
В init.php пусто.
Беда была в другом:
Ради теста взял тестовый период на timeweb, тариф "1Сайт" и закинул туда сайт, результат: 38,25. Разница очень ощутима, написал своей ТП, вот официальный ответ:
К сожалению, выполнять тонкие настройки, изменять конфигурацию, используемое ПО и т.п. на сервере затруднительно, поскольку настройки могут коснуться других сайтов на сервере. В целом, настройки на Вашем сервере близки к оптимальным, о чем говорит мониторинг сайта, мощностей сервера также достаточно - если сравнивать показатели CPU, то на Вашем сервере CPU работает в три раза производительней.
Возможно, смена режима работы PHP или смена акселератора на APC позволит увеличить быстродействие при тестировании, но гарантировать этого мы не можем, к сожалению.
Также, обращаем Ваше внимание на результаты сравнительного тестирования скорости загрузки обоих сайтов при помощи независимого сервиса:
Таким образом сайт работает быстрее, но битрикс говорит обратное. Поставил для домена работу через Apache и вуаля, уже 27.04.
Сейчас постепенно перенесу все настройки PHP с TimeWeb и посмотрю, на сколько еще увеличится результат
Вроде бы и времена, когда скачать песню в 3мб на компьютер можно было где-то за час, уже давно прошли. Да и на телефоне трафик уже много лет как исчисляется десятками гигабайт. Но как бы ни было парадоксально, сейчас вопрос скорости работы сайтов стоит как никогда остро.
Трафик все больше уходит в мобильные устройства , об этом мы писали еще в 2018 году. Значимость скорости загрузки для SEO продвижения тоже сложно переоценить. При долгой загрузке страниц возрастает показатель отказов, уменьшается конверсия.
Итак, важность скорости работы сайта мы обсудили, давайте посмотрим что можно предпринять, чтоб ускорить ваш Битрикс.
1. Минимизируйте CSS и JS файлы
Первое и самое простое, что можно сделать – это сжать JS и CSS файлы. Логика работы очень простая, из файлов убираются все «лишние» символы: пробелы, переносы строк, комментарии, переменные в JS приводятся к 1-2 символьному виду.
Если при разработке сайта на Битрикс вы подключали скрипты и стили правильно, то вам достаточно в настройках главного модуля проставить все галочки в блоке «Оптимизация CSS».
Что значит «правильно»? Это значит, что в коде шаблонов сайтов и компонентов у вас нет вставок <script></script>.
Что делать, если все подключено как попало? Переподключать!
Вот пример подключения на D7:
Пробегитесь по шаблонам сайтов и компонентов и убедитесь, что у вас нет блоков <script></script> нигде. Исключением может быть разве что счетчики метрик, а лучше одного счетчика – Google Tag Manager.
Про подключение файлов на старом ядре я писал в этой статье.
Второй вариант минификации файлов – использование Grunt или Gulp. Мне больше нравится Grunt, но любители Gulp легко найдут аналоги грантовских тасков:
- grunt-contrib-cssmin – минифицирует CSS.
- grunt-contrib-uglify – минифицирует JS.
- grunt-contrib-concat – обычное объединение нескольких файлов в один.
Важно: сжатие скриптов и стилей с помощью стороннего софта не освобождают вас от правильного подключения в bitrix.
2. Оптимизируйте изображения
Большую часть контента (по весу) на всех сайтах составляют изображения. Главное, чего нужно избежать – неоправданное использование изображений в высоком разрешении.
Зайдите в настройки любого информационного блока во вкладку «Поля» и в строках «Картинка для анонса» и «Детальная картинка» проставьте галочки «Уменьшать если большая», а потом введите оптимальные ширину и высоту изображений.
Проанализируйте какого размера картинки используются у вас на сайте и настройте все инфоблоки.
Если одни и те же изображения используются в нескольких местах с разным разрешением, то их вывод можно обернуть в CFile::ShowImage($img, $width, $height); Функция вернет HTML изображения, масштабированного в зависимости от указанных размеров. В первый параметр надо передать или ID изображения, либо путь к файлу.
В идеале, отдавать изображения в webp, но это чуть более трудоемкий процесс. Если хотите, чтоб я написал статью на эту тему, пишите в комментариях.
3. Используйте CDN
Еще один пункт, внедряемый буквально за пару минут.
CDN – сеть распределенных серверов, которая помогает быстрее загружать контент. Фактически, любые тяжелые ресурсы можно подтягивать с серверов, которые находятся ближе к конкретному посетителю. Супер актуально для компаний, чьи сайты расположены на наших серверах, а клиенты по всему миру.
Плохая новость №1: для использования технологии вам нужна активная лицензия 1С-Битрикс. Не продлили вовремя – CDN перестанет работать, ресурсы будут отдаваться как обычно.
Плохая новость №2: CDN трафик ограниченный. На разных редакциях по-разному: от 5Гб на «Старте», до 40Гб на «Бизнесе». Если вы исчерпаете лимит – ресурсы станут отдаваться в обычном режиме. Без ограничений на CDN трафик только редакция Энтерпрайз. Но у вас ведь не она, правда? :)
Плохая новость №3: битрикс пользуется услугами совершенно определенной сети CDN – CDNvideo. Если вам по каким-то причинам захочется сменить CDN провайдера, без команды опытных разработчиков вам не обойтись.
4. Избегайте 301 редиректа
Редиректы - убийцы производительности. Избегайте их везде, где это возможно. Они будут генерировать дополнительные Round Trip Time (RTT) и, следовательно, удваивает время загрузки изначальной HTML страницы, еще до того, как браузер начнет загружать контент.
SEO специалисты на этом пункте завоют. И серьезно, иногда 301 не решить определенные задачи. Просто пробегитесь по сайту (или воспользуйтесь софтом) и проанализируйте все ли действующие редиректы вам все еще нужны.
5. Используйте хостинг, рекомендуемый 1С-Битрикс или виртуальный сервер
Еще одна очень частая проблема – не оптимальная настройка хостинга. При этом сайт может работать абсолютно корректно.
Чтобы проверить все ли у вас в порядке, можно прямо из админки битрикса, протестировав производительность.
Настройки -> Производительность -> Панель производительности. Запустите тест на 1 минуту, после завершения, на вкладке «Конфигурация» вы увидите сравнение текущей конфигурации с эталоном.
Мы перепробовали какое-то количество хостингов за последние 7 лет (даже запускали свой), могу сказать, что оценка в 30 баллов – очень средняя отметка. На минимальном тарифе под 1С-Битрикс моего любимого Спринтхоста выдает 30 глазом не моргнув.
Да и любой хороший хостинг на средних тарифах, выдает 50-80. Ходят слухи, что кто-то разгонял Битрикс до 290 попугаев, но тут уже нужен сервер с хорошим железом.
На второй вкладке - «Битрикс» - найдете вердикт по настройке конфигурации. Если настроено не оптимально – ознакомьтесь с документацией и исправьте.
Если все плохо и хостер отказывается изменять конфигурацию (или переносить ваш сайт на другой сервер), стоит задуматься о его смене. На официальном сайте битрикса есть целый раздел с рекомендованными хостинг-партнерами . Выберите себе исходя из цены, качества и дополнительных плюшек. :)
6. Настройте кеширование
Следующий пункт – кеширование. Оно бывает разное, а метериала хватило бы для целой серии статей. Я хочу поговорить про встроенное в Битрикс.
Идем в настройки битрикса: Настройки продукта -> Автокеширование и включаем (если выключено).
Если вы думали, что на этом все – вы очень ошибались. Проходим по всему сайту, заходим в настройки каждого компонента и выставляем кеширование на «Авто», либо «Кешировать» и время кеширования в секундах (минимум 86400).
Можно сделать замену в IDE, запустив поиск по всему проекту. За кеширование компонентов отвечают параметры:
7. Настройте композитный сайт
Композитный сайт – запатентованная технология 1С-Битрикс и её включение действительно приводит к хорошим результатам.
В идеале настроить на хранение в memcached.
Еще несколько лет назад на подговотку сайта и отладку композитного режима ушла бы пара дней, сейчас достаточно включить Автокомпозит в настройках и радоваться жизни. Этот вариант рекомендует и сам Битрикс.
8. Не используйте старые версии PHP
Этот пункт можно было бы отнести в раздел о Хостинге, но я решил выделить его отдельно. Перестаньте сидеть на старых версиях php. Уже сам битрикс официально не поддерживает старые версии. Просто посмотрите на сравнение производительности. К сожалению, данных по Битрикс не нашел, но уверен там все примерно также.
По результатам попыток ускорить работу некоторых CMS (wordpress и bitrix) в формате "я тут админ, я могу поставить разный софт и произвольно настроить конфиги всего!" написан такой вот текст, по которому я с удовольствием приму не только соболезнования, но и какие-то конкретные рекомендации.
Подчеркну исходную постановку задачи: Не собирая Нового Крутого Сервера С Быстрыми SSD, добиться приемлемой (время отклика сервера менее 1 секунды, например) скорости работы сайта на этом . ном битриксе, максимально эффективно используя имеющиеся ресурсы.
По мнению самого Битрикса ("Панель производительности") "бутылочным горлышком" является быстродействие файловой системы (600 операций в секунду против ТРЕБУЕМЫХ битриксом 10000). Прочие параметры сервера практически устраивают ("База данных MySQL (чтение) 5 847 7 800 количество запросов на чтение в секунду" я считаю нормальным).
На текущий момент задачу лично для себя я практически решил и делюсь опытом.
То есть openssl s_client -connect домен:443, curl и php стали давать адекватный результат, без труднопредсказуемых глюков.
Часто приходится слышать вопрос: у нас свой сервер (или два), много ядер, памяти. почему же монитор производительности битрикса дает оценку производительности не выше (или ниже), чем на маленькой виртуальной машине?
Давайте разберемся в этом вопросе.
Подтекст вопроса обычно такой: "ваш тест не правильный, раз он не распознает наше железо".
Ответ: "мы и не пытаемся распознать ваше железо, мы показываем как работает наш продукт на вашем железе относительно того, как он может работать".
Чтобы понять смысл этого утверждения, надо знать, как мы получаем оценку.
Т.е. на основе приведенной картинки можно сказать, что публичная страница сайта с пустым шаблоном (например, версия для печати), с пустой рабочей областью будет создаваться за 1/40,32 или 0,0248 сек.
Обратите внимание, мы получили "Среднее время отклика".
Если говорить проще, то сервер сгенерирует 40 [пустых, но с подключением ядра] страниц в секунду.
А значит, она не вычисляется на основе "попугаев", приведенных ниже относительно файловой системы, работы базы, сессий и почты. Эти цифры нужны для того, чтобы помочь системному администратору найти узкое место (если такое есть). Оценка производительности всегда обратна величине среднего времени отклика.
почему же на хорошем железе php работает медленно?
Как ни странно, основным препятствием в этом вопросе являются сами администраторы.
На скриншоте видно, что наши рекомендации по оптимальной настройке php не выполнены.
На этом этапе важно победить себя и выполнить рекомендации. Если в силу каких-то причин затруднительно выпустить такую конфигурацию в продакшн (например, убрать ограничение open_basedir), попробуйте сделать это для теста и вы убедитесь, что может быть и быстрее.
Основные ошибки конфигурации
-
Не установлен акселератор php
Наличие акселератора php просто жизненно необходимо, в общем случае без дополнительных настроек страницы открываются в три раза быстрее, во столько же раз снижается нагрузка на процессор. Сегодня можно рекомендовать сборку Zend Server CE , быстрее любого акселератора в два раза. К сожалению, на некоторых конфигурациях он работает не стабильно, тогда ставьте (в порядке приоритета) APC, EAccelerator, XCache.
Включено ограничение open_basedir
На shared хостинге сложно отделить клиентов друг от друга, самый простой вариант, который обычно используют: включить open_basedir, тогда на все операции с файлами происходит дополнительная проверка пути. Что существенно снижает производительность. Решением будет использовать свой экземпляр apache для каждого пользователя или установка дополнительных модулей на сервер для ограничения доступа. В случае своего сервера или VPS ограничение open_basedir ставить не нужно ! Доступ ограничивается системой для пользователя веб сервера.
Не установлен или не настроен nginx
Хоть это напрямую не влияет на оценку производительности, но чрезвычайно важно для нагруженных проектов: вся статика (картинки, стили, ява скрипты) должна отдаваться nginx и не обрабатываться apache. Посмотрите логи доступа apache: там не должно быть ни одного запроса к статике!
Не настроена база данных
По возможности всегда используйте формат данных InnoDB, рекомендуемые настройки смотрите на странице монитора производительности "Сервер БД". Очень полезно также протестировать базу скриптом mysqltuner.pl , который чрезвычайно прост в установке и полезен для оптимальной настройки СУБД MySQL.
Как читать оценку подсистем
Мы не имеем прямого доступа к системным ресурсам, поэтому оценки, полученные средствами php, в большей степени отражают работу php, нежели "железа". По порядку пройдусь по всем, повторюсь по первым двум.
Среднее время отклика
Цифра, на основе которой делается оценка производительности: обратная ей.
Процессор (CPU)
Делается большое число простых математических вычислений. Задача не распараллеливается, поэтому идет оценка работы одного ядра процессора. Когда сайт работает на VPS, здесь часто можно увидеть, что "зажат" процессор.
Файловая система
Этот тест показывает не столько работу диска, сколько работу php с файлами : создается, исполняется, удаляется большое число простых файлов. Данный показатель зависит от производительности файловой системы и эффективности работы php акселератора. В целом хорошо показывает, как работает php на данной конфигурации (без учета работы базы).
Время старта сессии
Сессия стартует на каждый хит, поэтому это время будет прибавляться к работе каждой страницы. Проблемы обычно возникают, когда меняются настройки хранения сессий php так, что скапливаются сотни тысяч файлов сессий.
Что важно знать
- Оценка зависит от редакции продукта
Раз мы замеряем время работы ядра, очевидно, оно будет зависеть от размера ядра. Для редации "Бизнес" со всеми включенными модулями оценка всегда будет ниже, чем на "Старте" на том же оборудовании. Эталонная оценка делалась на редакции "Бизнес".
Результат зависит от пользовательских функций в /bitrix/php_interface/init.php
Указанный файл подключается на каждый хит, в том часле и при работе административной части. Он не должен содержать запросы к БД и любые другие ресурсоемкие операции.
Оценка будет меняться в зависимости от нагрузки
Чем больше нагружен сервер, тем ниже будет оценка. Но даже при пиковой нагрузке она не должна опускаться ниже приемлемого уровня чтобы можно было говорить, что сервер справляется (например, не ниже 10 единиц, т.е. 0,1 сек. на страницу).
Цифра не показывает возможности масштабирования системы
Процесс веб сервера работает на одном ядре, а значит когда измеряется производительность без нагрузки, число ядрер процессора не влияет на результат . Другое дело под нагрузкой: многоядерная система в состоянии сохранить высокие показатели.
Понимание того, как вычисляется и от чего зависит оценка производительности должно помочь по-другому взглянуть на эту цифру. Не надо стремиться к каким-то заоблачным показателям, возьмите ненагруженную систему, добейтесь хорошего значения (по сравнению с эталонным, а может быть ниже и это будет нормально). А затем возьмите нагрузочное ПО и посмотрите, как будет меняться величина при планируемой пиковой посещаемости на сайте. Убедидесь, что сервер не просто дает хороший результат, но и сохраняет его при нагрузке.
Нагрузочное тестирование отдельная тема, но сразу хочу сказать одно: не надо имитировать 100 параллельных пользователей, которые открывают страницы без перерыва. Между хитами обязательно должна быть задержка в несколько секунд (5-20), иначе это будет имитация DOS атаки. Если сервер будет тянуть 5 одновременных потоков без пауз, это очень и очень неплохо.
Если вы готовите к выпуску крупный проект или работающий проект испытывает трудности с производительностью, наша новая услуга "Экспертиза производительности" поможет получить оптимальную производительность на вашем железе. Наши специалисты сделают анализ конфигурации сервера и дадут конкретные рекомендации по его настройке. Если удобно, мы можем сами сделать необходимые изменения.
По ссылке - сразу выводы (для тех, кто спешит). Для остальных - подробности.
Итак, когда мы проводим аудит производительности сайта на Битриксе, то, как правило, появляется достаточно большой список рекомендаций. Если действовать согласно матрице Эйзенхауэра, то сначала нужно реализовать наименее трудоемкие и дающие максимальный эффект. Правильно? И вот это точно не программирование, а зачастую - хостинг, настройки хостинга, настройки Битрикса. Отладка производительности путем оптимизации кода достаточно трудоемка, как правило. И это при том, что Битрикс содержит замечательные инструменты для этого.
Отступление. Тест не претендует на абсолютную точность и в нем не учтено множество факторов. И не факт, что у вас будут такие же результаты. Однако, общая тенденция видна, что и требовалось.Конечно, в процессе есть подводные камни, но новые редакции Битрикса готовы к переходу, нормальный хостинг для Битрикс предоставляет такую возможность. Попробуем?
Ставим редакцию Бизнес на типовой тариф от Русоникса (спасибо им за предоставленную тестовую площадку):
Что видим? Старая версия php. Отмечу, что в строке Рекомендации - пусто. Это означает, что хостинг настроен оптимально с точки зрения Битрикса. Идем дальше, запускаем тест производительности:
Что видим? Производительность на уровне, чуть выше эталона. Вроде неплохо, но при разработке она снизится, к тому же на этом хостинге бывали цифры и повыше. Ну да ладно, за точку отсчета - пойдет. Теперь переключаемся на php7
Сначала вылезли ошибки, связанные со сменой типа подключения базы данных, после изменения стандартных настроек открываем сайт:
Чудненько! Как видим, по дисковым (файловым) операциям все осталось на прежнем уровне, а вот скорость процессора и отзывчивость выросли настолько, что общая производительность возросла в два раза.
Тут можно было бы уже подвести итоги, но давайте посмотрим еще один момент - поведение сайта под нагрузкой:
Выводы:
- в 1,7 раза (с 37 до 64) увеличить производительность сайта по замерам внутреннего инструмента Битрикса
- увеличить нагрузочную способность примерно с 45 до 80 страниц в секунду
- сократить время отдачи страницы с 3,6 до 1,6 сек под максимальной нагрузкой
- вы можете меньше денег тратить на хостинг - или взять тариф подешевле, или иметь запас производительности на случай наплыва клиентов во время акций
- ваш сайт отдается быстрее и поисковики ранжируют его выше
- пользователям не нужно ждать загрузки страниц - растет конверсия
А пока наша рекомендация: если у вас Битрикс последней версии и хостинг позволяет - переходите на php 7.
Читайте также: