Как заставить сайт летать и сэкономить десятки часов системного администрирования

    Скорость работы вашего сайта, его стабильность и отказоустойчивость всегда зависят от трех составляющих:

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

    Зачастую веб-разработчик может написать хороший качественный код, но при этом мало что смыслит в системном администрировании и настройке серверов. А хороший сисадмин редко бывает по совместительству еще и классным программистом.

    В общем-то, это — совершенно нормально, каждый должен заниматься своим делом. Но, к сожалению, в небольших веб-студиях, которых большинство, редко есть админы в штате. Настройкам хостинга уделяется мало внимания. В лучшем случае — полагаются на суппорт хостера и настройки «по умолчанию».

    В итоге сайт может «хромать» из-за проблем и «узких» мест в любой из составляющих: CMS, хостинг, разработка. Клиент в нюансы не вникает и остается не удовлетворен проектом в целом. Его негатив переносится на всех: «Тормозной хостинг! Ужасная система! Разработчики ничего не умеют!»

    Такая картина нас, конечно, никогда не устраивала. И мы решили, что надо что-то делать…

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

    Сегодняшний пост — о хостинге, серверах, VPS и их администрировании.

    Самое простое и, вроде бы, наиболее очевидное решение — написать хорошее подробное руководство по конфигурированию веб-систем, дать его всем желающим. И всё будет хорошо.

    И начали мы как раз с этого — написали подробную документацию (было это, кажется, 6 или 7 лет назад). Затем на ее основе было выпущено несколько бесплатных учебных курсов, которые постоянно улучшались и адаптировались. В итоге сейчас они обобщены в общий «Курс для хостеров».

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

    Но, к сожалению, даже наличие максимально полной документации и практических рекомендаций по настройке серверов не решает проблему производительности для большинства проектов! Хороших — правильных! — конфигураций все равно очень мало.

    Причин тому много…
    • У многих администраторов банально нет времени для «тонкой» настройки системы. Поставили, базовое конфигурирование выполнили — уже хорошо...
    • Низкая квалификация технических специалистов — даже для того, чтобы все сделать «по мануалу», нужен какой-то технический бэкграунд и понимание происходящих процессов.
    • «Историческое наследие» – использование конфигураций 3-5-…-летней давности, в лучшем случае – апгрейд ПО. Четкое следование принципу «работает — не трогай». Который, как оказывается, не всегда применим.
    • Шаблонные конфигурации для всех проектов.
    • И т.д.

    В итоге — как показывает наша практика — остается много типичных проблем, которые почти всегда снижают скорость работы сайта.

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

    PHP как CGI

    К счастью, такой режим работы PHP уже становится редкостью. Тем не менее, еще где-то год назад таких конфигураций было достаточно много.

    Чем плох CGI? Тем, что на каждое обращение к скрипту запускается отдельный процесс PHP. Это долго и ресурсоемко.

    open_basedir

    Этот параметр в PHP отвечает за ограничение доступа скриптов в те или иные директории. Очень полезно для конфигураций, в которых на одном сервере могут работать сайты разных клиентов. Благая цель — безопасность, но при этом реализовано решение, мягко говоря, «не очень»…

    Во-первых, есть немало вариантов «обойти» ограничения, установленные в open_basedir.

    Во-вторых, установка этого параметра (даже в «пустое» значение) очень негативно влияет на скорость работы PHP (файловые операции, например, include). На пустом ненагруженном сервере скорость генерации страниц может снизиться на 20-30%, а при высокой нагрузке — в 2-3 раза.

    Есть много альтернатив для open_basedir. Начиная с отдельной копии веб-сервера для каждого клиента, заканчивая использованием chroot.

    Не установлен прекомпилятор PHP

    APC, eAccelerator, XCache… Надеюсь, эти слова вам знакомы.

    Прекомпилятор служит для оптимизации и ускорения выполнения PHP-скриптов (прекомпилирует интерпретируемый код, кэширует результат и затем исполняет уже прекомпилированный код).

    Разница в производительности на разных проектах может достигать нескольких раз.

    Недостаточно памяти прекомпилятору

    Прекомпилятор может быть установлен, но, например, все настройки оставлены «по умолчанию». Чем это может быть чревато? Например, тем, что будет выделено слишком мало памяти для закэшированных скриптов, обращения к новым скриптам будут вытеснять старые данные, и вся работа прекомпилятора будет неэффективной.

    Отсутствует FrontEnd (nginx)

    Двухуровневая архитектура «Backend — Frontend» — практически обязательное требование для стабильной работы любого более-менее нагруженного веб-проекта.

    Такая схема работы решает несколько задач:
    • всю статику быстро отдают «легкие» (с минимальным потреблением памяти) процессы;
    • backend занят обработкой только «тяжелых» запросов к скриптам;
    • на медленных каналах у клиентов backend не занят отдачей контента конечному клиенту — он отдает его frontend'у и свободен для обработки последующих запросов.

    Не отрегулировано значение MaxClients в Apache

    На non-threaded серверах этот параметр отвечает за максимальное количество процессов, которые могут быть запущены для параллельной обработки клиентских запросов.

    Многие думают, что чем больше — тем лучше. Во многих конфигурациях можно видеть значения и 50, и 150, и 256.

    Что это означает на практике. Допустим, один процесс Apache может потребить 40 Мб оперативной памяти. Если MaxClients установлено в 150, то при пиковой нагрузке (DDoS, хабраэффект, ошибки в разработке и т.п.) под все процессы потребуется примерно 6 Гб RAM. Только под Apache.

    Если такое количество памяти не доступно, начнет использоваться своп. И начнется общая деградация всей системы. И даже те запросы, которые могли бы быть обработаны быстро, будут обрабатываться очень долго.

    Гораздо лучше ограничить MaxClients разумным значением. Если количество запросов будет больше, то они просто «встанут в очередь» и будут обработаны, когда освободятся занятые процессы. Система будет стабильна.

    * * *

    Список таких типовых ошибок можно продолжать очень долго…

    Мы в своей практике сталкивались с ними очень часто.

    И в результате в 2009 году мы выступили в достаточно нетипичной для себя роли — не разработчиков, а системных администраторов. И выпустили бесплатный продукт «1С-Битрикс: Виртуальная машина».

    Что это такое?

    VMBitrix (как мы коротко называем виртуальную машину) — это готовый образ VMWare Virtual Appliance, который можно запустить на самых разных продуктах VMware (VMWare Server, VMWare ESX и ESXi, VMWare Workstation, VMWare Player, VMWare Fusion).

    Чтобы было реализовано в этом образе?
    • Конечно, уже установлена операционная система (первые образы были на Ubuntu, в дальнейшем — CentOS).
    • Настроена двухуровневая конфигурация веб-сервера (Apache + Nginx).
    • Установлен прекомпилятор Zend Optimizer+, входящий в пакет Zend Server CE. По результатам нагрузочных тестов он показал наилучшую производительность.
    • Установлен и сконфигурирован MySQL.

    Изначально мы не планировали широко распространять этот образ. Самые-самые первые версии даже не были публичными, а использовались лишь для внутренних целей.

    VMbitrix по сути служил эталонной средой, на которую можно было бы ориентироваться, разворачивая собственную систему.

    Тем не менее, «1С-Битрикс: Виртуальная машина» оказалась очень востребованной. Хостеры, которые могли предоставлять тарифы на базе VMware, стали использовать наш образ для новых тарифов, ориентированных на размещение проектов на платформе «1С-Битрикс».

    Постепенно стали появляться запросы «а сделайте такой же образ под Hyper-V», «а сделайте темплейт под Virtuozzo»…

    Постепенно мы стали поддерживать почти все распространенные среды виртуализации.

    Поддержка всех актуальных версий в итоге стала требовать достаточно заметных усилий, и в итоге примерно через год появился еще один бесплатный продукт — «1С-Битрикс: Веб-окружение» (Linux).

    По сути это — RPM пакет, который автоматически можно развернуть на CentOS (5, 6), Fedora (12-16), Red Hat Enterprise Linux (5, 6). Поддерживается и 32-, и 64-разрядная архитектура.

    Таким образом, совершенно не важно и не принципиально, используете ли вы реальный физический сервер, или же арендовали виртуальную машину (у Амазона, Scalaxy, Clodo.Ru или кого-то еще), или же купили обычный VPS.

    На «голой» системе достаточно выполнить:

    # wget repos.1c-bitrix.ru/yum/bitrix-env.sh
    # chmod +x bitrix-env.sh
    # ./bitrix-env.sh


    … и несколько раз ответить «yes» в процессе установки. :)

    (К слову, современные версии виртуальной машины, которая продолжает поддерживаться, собираются именно так — из пакета «1С-Битрикс: Веб-окружение»).

    Собственно, все! После такой простой установки вы получаете «Веб-окружение» — сейчас уже версии 3.1.

    Как эволюционировал продукт и что он «умеет делать» сейчас (при чем умеет сразу, «из коробки»). Опишу несколько наиболее интересных, на мой взгляд, «фишек».

    Удобный инсталлятор любых продуктов «1С-Битрикс»

    После установки веб-окружения при входе на сервер по HTTP вас встречает очень простой мастер, который позволяет развернуть уже существующий сайт из резервной копии или же установить новый, использовав любой продукт — будь то «Управление сайтом», «Корпоративный портал» или же то или иное тиражное решение.





    Мастер доступен на трех языках — русском, английском и немецком.

    При этом уже полностью настроено соединение с базой MySQL (в файле /home/bitrix/www/bitrix/php_interface/dbconn.php), поэтому инсталляция любого продукта проходит по «сокращенной» процедуре: не проверяются параметры системы (мы заранее знаем, что она удовлетворяет техническим требованиям), не запрашиваются параметры соединения с базой (все уже настроено).

    Стартап-меню

    Вот такое меню вы увидите, если зайдете на машину по SSH:



    Конечно, выглядит оно несколько аскетично по сравнению с современными красивыми веб-интерфейсами. :) Наверное, когда-нибудь мы сделаем и их для веб-окружения и виртуальной машины — и получим в итоге полноценную панель управления хостингом а-ля ISPmanager, cPanel или Plesk. :)

    Но даже в таком варианте — это очень мощный и удобный инструмент.

    Веб-кластер

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

    У нас есть подробное руководство по настройке веб-кластере, все желающие могут с ним ознакомиться.

    Но для того, чтобы сэкономить свое время, можно воспользоваться мастером, который входит в состав веб-окружения:
    • он сконфигурирует и запустит репликацию MySQL;
    • сконфигурирует nginx в качестве балансировщика на несколько нод;
    • настроит пул серверов memcached для распределенного кэша данных;
    • настроит и запустит синхронизацию данных веб-серверов с помощью утилиты csync2.

    Процесс настройки получается примерно таким:
    • Запускаем виртуальную машину или разворачиваем веб-окружение.
    • Устанавливаем через мастер в браузере «1С-Битрикс: Управление сайтом» одной из двух старших редакций (куда входит модуль «веб-кластер»).
    • Запускаем настройку master ноды через меню.
    • Запускаем еще одну виртуальную машину (или разворачиваем веб-окружение на втором сервере).
    • Через меню первой машины добавляем slave ноду.

    Далее все настройки будут выполнены автоматически.

    На прошедшей недавно партнерской конференции Денис Шаромов, руководитель технической поддержки, наглядно демонстрировал весь процесс разворачивания маленького тестового кластера буквально за 10-15 минут.

    Там же он демонстрировал еще одну замечательную возможность — переключение любого слейва в режим мастера в случае аварии на мастер-ноде.

    У вас есть замечательная возможность посмотреть все это практически «вживую» — на сайте конференции выложены видео-записи докладов, в том числе и доклад «Виртуальная машина 3.0: Как запустить веб-кластер за 15 минут с практическими примерами».

    Корпоративный портал

    «1С-Битрикс: Веб-окружение» максимально адаптировано для любых проектов, разработанных на платформе «1С-Битрикс» (при этом на нем замечательно будут работать вообще любые сайты, использующие PHP и MySQL).

    Но при этом есть целый ряд отдельных «фишек», специально предусмотренных для работы именно с «Корпоративным порталом».

    Например, автоматически инсталлируются и конфигурируются в продукте утилиты catdoc и xpdf, которые позволяют «на лету» индексировать и делать доступными для поиска на портале документы самых популярных форматов (MS Word, Excel, PowerPoint, Adobe Acrobat).

    Веб-сервер сразу сконфигурирован для работы и по HTTP, и по HTTPS. Можно просто заменить self signed сертификат на свой купленный — и работать в защищенной среде.

    Далее… Сразу «из коробки» поддерживается WebDAV для подключения сетевых дисков.

    Отдельно можно упомянуть мастер настройки NTLM авторизации:



    Если в компании используется Active Directory, и пользователям AD разрешено авторизовываться на портале, то помимо настроек собственно портала зачастую требуется немало «танцев с бубном» вокруг конфигов Apache и Nginx для корректной работы NTLM авторизации.

    Теперь это не требуется, весь процесс автоматизирован!

    (Подробно весь процесс настройки описан в блоге Николая Рыжонина.)

    Автоматическая конфигурация в зависимости от доступных ресурсов

    В веб-окружении есть хитрый скрипт /etc/init.d/bvat.

    Запускаясь при старте системы, он определяет количество доступных ресурсов (RAM) и в зависимости от них автоматически оптимально настраивает:
    • MySQL (размеры буферов, количество соединений, временные таблицы и т.п.);
    • MaxClients и связанные с ним параметры в Apache;
    • количество доступной памяти для Zend Optimizer+.

    Если после установки виртуальной машины или веб-окружения вы хотите выполнить уже тонкую настройку конкретно под свои задачи, отключите этот скрипт, чтобы он не срабатывал при каждом ребуте сервера.

    * * *

    Мы как-то попробовали посчитать, а сколько бы понадобилось времени в «человеко-часах» :) на полную настройку всего софта, разворачивание кластера, конфигурирование NTLM-авторизации… Получалось не меньше 200 часов! :)

    Конечно, это — верхняя оценка. Тем не менее, даже если вам, например, нужно настроить VPS для стабильной работы обычного сайта, понадобится 1-2 дня для того, чтобы все поставить, настроить и протестировать.

    С «Веб-окружением» или «Виртуальной машиной» «1С-Битрикс» это время можно сэкономить и потратить на что-то другое. :)

    P.S. Нас часто просят выложить подробное описание веб-окружения: с примерами скриптов, конфигов и т.п.

    Такое «описание» — это само веб-окружение. Оно абсолютно бесплатно. Поставьте его на любую машину или же скачайте нашу виртуальную машину. Зайдите на нее по ssh — и изучайте! Все конфиги, все скрипты — всё полностью открыто и доступно. :)

    Comments 107

      –4
      летать
      сайт
      битрикс

      выбрать что-то 2
        +7
        Можно ли как-то аргументировать?
        +35
        Есть мнение, что для того чтобы сайт «летал» — достаточно не использовать битрикс ;)
          +6
          Есть мнение, что при нормальных «прямых» руках и грамотном подходе сайт будет летать практически на любой системе. Об этом и статья.
            –3
            Вы не подумайте что HLL не любит битрикс — мы его обожаем. Нет никакой другой CMS на которой с минимальными трудозатратами можно показать 3d пилотаж. Набегает аллегория — «свинья с твердотопливными ускорителями на борту».
              +5
              :)

              Если мысль о том, что Битрикс прожорлив до ресурсов и была когда-то актуальна, то сейчас эта информация является давно устаревшей.

              Системные требования и возможности по производительности уже давно, как минимум, равны всем прочим системам (как платным, так и бесплатным). И при правильном подходе — и вовсе позволяют держать огромные нагрузки.

              Вот прямо сейчас сам лично занимаюсь проектом, который, конечно, на Битриксе. Пока в самом-самом тестовом режиме. Посещаемость — сотни тысяч хитов в сутки. И нагрузка на систему — минимальна.
                0
                Сотня тысяч хитов в сутки, при пользовательской активности на протяжении 8 бизнес-часов — это 3-4 запроса в секунду. Вы действительно этим гордитесь?
                  +6
                  Близкой к нулю загрузкой в этих условиях и запасом по производительности примерно в 20-30 раз для комфортной работы (тестировали) — да.
                    +1
                    а можно подробней о методике тестирования?
                    — как готовили тестовый датасет?
                    — как готовили сценарии поведения пользоветелей?
                    — чем «проигрывали»?
                    — какие метрики системы засекали?

                    Просто «20-30» раз означает что вы должны держать 60-120 запросов в секунду, что уже для битрикса на одном 8-16ти ядерном боксе c обычным HDD достаточно внушительно (фантастично?)
                      +1
                      Держали около 70 стабильно.
                      Помню что люди ломанулись в течении часа очень сильно, при сотне мы стали адски тормозить и потом упали.
                      Можете от лица ХЛЛ сделать сами замеры и запостить статьёй.
                      Демо-версия на 30 дней.
                        +1
                        у нас есть клиенты которые живут на bitrix, более-менее мы представляем начинку.
                        гораздо более интересно как вы формировали датасет и пользователевские сессии для синтетики на которой получили шкалирование в 20-30 раз.
                        +1
                        JMeter: авторизация пользователя, хиты по нескольким страницам.

                        Смотрели скорость генерации страниц.
                          0
                          Тестовый сайт, сценарий jmeter -а, аппаратный конфиг, результаты остались?

                          Иначе просто разговор получается пустой.
            +5
            Bitrix Quiz: сколько запросов к базе нужно сделать 1C-Bitrix, чтобы показать один HTTP 404?
              –1
              Хм, 40?
                –5
                10 или около того
                –6
                Что-то все это мне напоминает — изначально Битрикс медленный, но мы делаем всякие костылики и хитрости чтобы он «летал»
                  +9
                  Изначально Битрикс — это CMS.

                  А мы говорим о настройке хостинга или сервера.

                  Поставьте любую систему на хороший хостинг — и все будет хорошо. Поставьте любую систему (не важно, Битрикс это или нет) на плохой хостинг… И вы сами назовете эту систему медленной. :)

                  А все потому, что как и написано в первых абзацах — не станете разбираться, что и из-за чего тормозит.
                    –3
                    Сравнивать нужно не по мощности и правильной настройке сервера, а по производительности системы в равных условиях. Так можно сказать, что CMS A производительнее B, тк. её запустили в большом облаке.

                    Я давно не работал с Битриксом, но там было столько говнокода, что я никогда не поверю в возможность исправить ЭТО. И что Битрикс сравним с конкурентами рынка по производительности, до сих пор в кошмарах снятся ТЕ запросы.
                      +1
                      Кстати, кто является конкурентом по производительности?
                        –5
                        Никто. Бог с вами!
                        Битрикс выше этого!
                        Битрикс — это производительность вне конкуренции ;)
                          –5
                          Если вы посмотрите какие запросы к базе делаются, то ответ прост: все.
                            +2
                            Голословно.

                            Смотрели не одну CMS. Некоторые из них в принципе не могут работать с большими объемами данных (например, от 10к позиций в интернет-магазине).

                            Битрикс, кстати, может.
                              0
                              В принципе это как? Ограничения стоят? «Артикул» четырьмя цифрами ограничен?
                                +1
                                «В принципе» — это дикие тормоза на каждый хит, даже без нагрузки.
                                –4
                                Пока сам себя не похвалишь никто другой не похвалит :( печально
                      –8
                      Ну и нотация «кластерных технологий» от 1С-Bitrix — это чрезвычайно интересно ;)
                        +8
                        Да и вообще во времена Плати-За-Ресурсы я буду просыпаться по ночам, вспоминая тот код и понимая сколько ненужных тактов процессора и Мб памяти постоянно используются
                          +2
                          Хотя конечно можно нанять почасово дорогого опытного специалиста и все настроит. Ибо самому там разобраться невозможно
                            +7
                            Минусуете? Ну вы сами нарвались. Типичная страница сайта. Вот такие запросы строит наш быстрый битрикс

                            SELECT FPV0.VALUE as PROPERTY_TEACHER_VALUE
                            , FPV0.ID as PROPERTY_TEACHER_VALUE_ID
                            ,IF(EXTRACT(HOUR_SECOND
                            FROM
                            BE.ACTIVE_FROM)>0, DATE_FORMAT(BE.ACTIVE_FROM, '%d.%m.%Y %H:%i:%s'), DATE_FORMAT(BE.ACTIVE_FROM, '%d.%m.%Y')) as ACTIVE_FROM
                            ,BE.ID as ID
                            ,DATE_FORMAT(BE.TIMESTAMP_X, '%d.%m.%Y %H:%i:%s') as TIMESTAMP_X
                            ,UNIX_TIMESTAMP(BE.TIMESTAMP_X) as TIMESTAMP_X_UNIX
                            ,BE.MODIFIED_BY as MODIFIED_BY
                            ,DATE_FORMAT(BE.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE
                            ,UNIX_TIMESTAMP(BE.DATE_CREATE) as DATE_CREATE_UNIX
                            ,BE.CREATED_BY as CREATED_BY
                            ,BE.IBLOCK_ID as IBLOCK_ID
                            ,BE.IBLOCK_SECTION_ID as IBLOCK_SECTION_ID
                            ,BE.ACTIVE as ACTIVE
                            ,IF(EXTRACT(HOUR_SECOND
                            FROM
                            BE.ACTIVE_TO)>0, DATE_FORMAT(BE.ACTIVE_TO, '%d.%m.%Y %H:%i:%s'), DATE_FORMAT(BE.ACTIVE_TO, '%d.%m.%Y')) as ACTIVE_TO
                            ,IF(EXTRACT(HOUR_SECOND
                            FROM
                            BE.ACTIVE_FROM)>0, DATE_FORMAT(BE.ACTIVE_FROM, '%d.%m.%Y %H:%i:%s'), DATE_FORMAT(BE.ACTIVE_FROM, '%d.%m.%Y')) as DATE_ACTIVE_FROM
                            ,IF(EXTRACT(HOUR_SECOND
                            FROM
                            BE.ACTIVE_TO)>0, DATE_FORMAT(BE.ACTIVE_TO, '%d.%m.%Y %H:%i:%s'), DATE_FORMAT(BE.ACTIVE_TO, '%d.%m.%Y')) as DATE_ACTIVE_TO
                            ,BE.SORT as SORT
                            ,BE.NAME as NAME
                            ,BE.PREVIEW_PICTURE as PREVIEW_PICTURE
                            ,BE.PREVIEW_TEXT as PREVIEW_TEXT
                            ,BE.PREVIEW_TEXT_TYPE as PREVIEW_TEXT_TYPE
                            ,BE.DETAIL_PICTURE as DETAIL_PICTURE
                            ,BE.DETAIL_TEXT as DETAIL_TEXT
                            ,BE.DETAIL_TEXT_TYPE as DETAIL_TEXT_TYPE
                            ,BE.SEARCHABLE_CONTENT as SEARCHABLE_CONTENT
                            ,BE.WF_STATUS_ID as WF_STATUS_ID
                            ,BE.WF_PARENT_ELEMENT_ID as WF_PARENT_ELEMENT_ID
                            ,BE.WF_LAST_HISTORY_ID as WF_LAST_HISTORY_ID
                            ,BE.WF_NEW as WF_NEW
                            ,if (BE.WF_DATE_LOCK is null, 'green', if(DATE_ADD(BE.WF_DATE_LOCK, interval 60 MINUTE)
                              +2
                              1. Вы запрос взяли не полностью. :)

                              2. Ресурсоемкость вы оцениваете «по размеру» и читаемости? Сделайте EXPLAIN.
                                +7
                                Весь запрос не вместился. Там 88 строк SQL кода в которых 9 JOIN, 12 DATE_FORMAT, куча concat и прочей лабуды — pastebin.com/j3SJ8pVs
                                  –3
                                  Сколько ресурсов у вас съел этот запрос? Как долго он выполнялся?

                                  Я не глумлюсь и не иронизирую. Мы (Битрикс) прекрасно осознаем, что идеальных систем не бывает. Что везде есть ошибки и те или иные архитектурные просчеты.

                                  Важно уметь их видеть, понимать и исправлять. Что мы делаем просто постоянно.

                                  Архитектура платформы «1С-Битрикс» развивается очень давно. Многие вещи полностью переработаны, что-то является многолетним наследством.

                                  И сейчас заявление «Битрикс — тормозит» будет просто голословным. А, вот, какие-то конкретные узкие места мы сами же первые будем заинтересованы и обсудить, и исправить.
                                    +7
                                    Вы интересный человек. А Вы можете точно сказать сколько ресурсов съел этот запрос?
                                      +8
                                      Вы конечно заминусовали меня здорово. Но я хотел донести одну простую идею. Человеку с сайтом визиткой будет абсолютно по барабану все оптимизации и какой там APC и open_basdir. А человек который действительно будет стремится сделать масштабируемый и минимально требовательный к ресурсам проект не будет использовать Битрикс (как и любую другую CMS) это точно. Просто если бы Битрикс позиционировался как просто CMS бог с ним. Но вы же его позиционируете как сверхбыструю платформу для разработки чего угодно. Увольте
                                        +3
                                        1. Жанр «сайт-визитка», уверен, очень скоро себя изживет.

                                        Интернет-магазин, форум, голосовалки, опросы, фото- и видео-галереи и т.п. станут стандартом де-факто очень скоро.

                                        Давайте возьмем понятие «средний сайт». Уже давно это — не сайт-визитка.

                                        И вот тут-то с ростом аппетитов, и тем более — с ростом нагрузки, станет совершенно не по барабану, быстро ли загружаются страницы, всегда ли сайт доступен, и если не всегда, то почему.

                                        2. > А человек который действительно будет стремится сделать масштабируемый и минимально требовательный к ресурсам проект не будет использовать Битрикс (как и любую другую CMS) это точно.

                                        Это вы зря…

                                        www.eldorado.ru/
                                        www.svyaznoy.ru/
                                        euroset.ru/
                                        www.kupibonus.ru/
                                        www.kupibonus.ru/


                                        Это все Битрикс.
                                          +3
                                          GET / HTTP/1.1
                                          Host: www.eldorado.ru

                                          ответ 1.8 s
                                          Знаете. Вы можете доказывать что угодно и кому угодно но только не мне
                                            +3
                                            Исключим каналы и т.п. вещи: www.eldorado.ru/?show_page_exec_time=Y

                                            «Время создания страницы: 0.4649 сек.»
                                              +2
                                              Да мне все равно что там пишет Ваш Битрикс. Факт есть фактом. Время ответа динамической части сайта — 1.5-2с. У моего друга проект на балконе на руби рейлс за 110 мс отвечает. Но конечно это все каналы и луна не так etc
                                                +1
                                                > time wget www.eldorado.ru

                                                [...]

                                                0.000u 0.011s 0:00.68 1.4% 876+800k 6+3io 9pf+0w

                                                Мы, кстати, чем меряемся? ;))

                                                У Вашего друга проект на балконе обрабатывает сотни тысяч запросов в день и на каждый из них отвечает за 110 мс? Ваш друг — молодец. :)
                                                  +4
                                                  У нет такого к-ва завросов. Но поверьте. При увеличении посещаемости до такого уровня масштабирование проекта ну рейлс с MongoDB не заняло бы много времении и денег
                                                  И кстати рейлс достаточно умен чтобы отвечать на запрос главной страницы 304 Not Modified, уменьшая при этом трафик от сервера клиенту. Видимо в Битриксе до этого ещё не додумались
                                                    +1
                                                    Додумались, конечно. Вплоть до возможности использовать html кэш.

                                                    Видимо, владельцам и администраторам Эльдорадо нужен каждый хит. Я про подробности не в курсе и отношения к проекту не имею.

                                                    Кстати, проверяя на 304, Вы отправляли в запросе ETag и If-Modified-Since? Может, он и отдает…
                                                      +2
                                                      Браузер сам посылает ETag и(или) If-Modified-Since когда сервер ему отдаем ETag и(или) Last-Modified
                                                        0
                                                        Ну и ссотв. Cache-control
                                                          0
                                                          ТА-ДА! Перестрелка закончилась.
                                                        +1
                                                        Сейчас, в час ночи мск, когда большинство населения России спит, у www.kupibonus.ru время генерации ~2.1 сек
                                                        Простая страничка со списком последних акций. Как так толго можно генерировать?
                                                        У остальных железо, видимо, на порядок лучше.
                                                      0
                                                      ну мы сейчас на какойнить github из рельс ткнем, который странички для залогиненных пользователей быстрее генерит ;)
                                                    –1
                                                    Исключим каналы и т.п. вещи: www.eldorado.ru/?show_page_exec_time=Y
                                                    Время создания страницы: 1.9204 сек.
                                                      0
                                                      Сейчас они скажут что это хабраеффект
                                                        +2
                                                        Хм, у меня скачет от 0.27 до 0.45
                                                          0
                                                          Предположу, что у какого-то компонента(-ов), размещённого на странице, сдох кэш и ваш хит его перегенерировал
                                                            0
                                                            Ночью было 0,2 сек. Днем — 0,4.
                                                              +4
                                                              Ради интереса прошелся по 9 первым сайта из списка
                                                              www.1c-bitrix.ru/products/cms/projects/

                                                              Все сайты, кроме XEROX показали время генерации страницы меньше 1 секунды, в основном в диапазоне от 0,2 до 0,5 сек.

                                                              Минимальное время генерации было у сайта Евросети — 0,1.

                                                              Максимальное у XEROX — 2,5 секунды с первой загрузки и 0.55 со второй.
                                                              +3
                                                              0.5 секунды на создание морды для неавторизованного посетителя это для вас нормально? O_o
                                                                0
                                                                Смотря какая морда.
                                                                  0
                                                                  В данном случае — морда коммерческого проекта. Интернт-магазина.
                                                                  ИМХО такой отклик — неприемлем для подобных проектов.
                                                                0
                                                                Странно а я почему то всегда начинаю искать что я не так написал когда у меня симфони выдает больше 100 мс на генерацию…
                                                              +3
                                                              По проектам скромничает мой коллега:
                                                              www.1c-bitrix.ru/products/cms/projects/

                                                              А вот за статью ему «Спасибо», возможно партнеры-разработчики воспользуются необходимыми инструментами для повышения эффективности производительности проектов. Ну или приходите к нам делать экспертизу.

                                                                –5
                                                                1. Жанр «сайт-визитка», уверен, очень скоро себя изживет.
                                                                Интернет-магазин, форум, голосовалки, опросы, фото- и видео-галереи и т.п. станут стандартом де-факто очень скоро.

                                                                Это могло стать стандартом де-факто и 10 лет назад (разве что кроме видео). Не стало. Почему? Имхо, потому что не востребовано заказчиками, прежде всего малым бизнесом. Всё что им нужно, это чтобы потребитель мог нагуглить их по названию и посмотреть номер телефона. Вернее как — сначала они просят включить им всё по максимуму (мне не сложно галочки в админке поставить, максимум пару моделей дополнительно установить), а потом через некоторое время (2-10 месяцев), когда сайт уже как бы в продакшене, звонят и просят отключить практически всё. Заходишь и видишь, что контент с момента запуска не изменился ни на байт и чуть ли не тестовые данные там лежат, последня новость она же первая «наш сайт открылся», прайс не обновлялся (и потому просят его убрать), на форуме несколько неотвеченных вопросов, в голосовалка и опросах что-то вроде «нравится ли вам наш сайт» и т. п. Очень часто не нужна оффлайновому бизнесу функциональность большая, чем визитка. Они готовы за неё заплатить, но не готовы поддерживать контент в актуальном виде и совершенно, по-моему, верно понимают, что сайт в таком виде виде приносит больше вреда чем пользы и просят отключить все эти фичи, оставив лишь контакты, схему проезда да форму обратной связи максимум. Фактически 3-4 статических страницы и примитивный скрипт обработки обратной формы.
                                                                  +5
                                                                  Вы сами — разработчик? Сколько проектов в год у вас делается?

                                                                  Как-то обобщая опыт партнеров, мы видим совершенно иную тенденцию. Все более и более востребован тот функционал, который раньше казался заказчикам лишним.
                                                                    0
                                                                    Мало, даже «демпинг» не помогает 40 часов занятости в неделю обеспечить. А может невостребованную услугу предлагаю.

                                                                    Но с кем работал, всё-таки приходят к мысли, что им нужна визитка с минимальной функциональностью, просто потому что у них нет свободного времени, чтобы поддерживать контент в актуальном состоянии.
                                                              +1
                                                              Если бы он выполнялся на моем проекте — конечно. Как минимум, я бы посмотрел, сколько он выполнялся по времени. Как использовал индексы. И т.п.
                                                              –2
                                                              Путин в таком же ключе вещает кстати
                                                            –1
                                                            Жуть.
                                                          +6
                                                          Неужели с WordPress или Joomla с пачкой сторонних плагинов вы-таки будете спать спокойно, не тревожась за ресурсы? ;)
                                                            +1
                                                            Ок, аргументы против самых популярных в мире CMS Drupal,WP,Joomla у Вас имеются?

                                                            Вроде Ваши слова:
                                                            «И сейчас заявление «Битрикс — тормозит» будет просто голословным. А, вот, какие-то конкретные узкие места мы сами же первые будем заинтересованы и обсудить, и исправить.» комментом выше

                                                              +2
                                                              Не все запросы которые выглядят сложно на самом деле таковыми являются, так что это не аргумент. Как минимум необходимо еще время его выполнения и explain
                                                                +1
                                                                Извините, я забыл шляпку с надписью «irony on» надеть. ;)

                                                                «irony off»

                                                                Я ничего не имею против Drupal, WP и Joomla.

                                                                Если вы реально заботитесь о ресурсах, вы ставите Munin, Zabbix, Nagios, делаете полноценный нагрузочный тест, определяете узкие места и круглосуточно мониторите все параметры системы.

                                                                Без этого, просто бегло глянув код, бесполезно вздыхать о ресурсах. И не важно, Битрикс это или Joomla.
                                                                +2
                                                                Joomla — вообще отдельным пунктом идет. 150 запросов в базу для того, чтобы показать главную, на дедике около 3-4 rps. Форум джумловодов, на дедике была только joomla.

                                                                Правда, в том тестировании между drupal, wp и джумлой joomla еще и победила.
                                                              +23
                                                              Мне кажется, что вы бы лучше рассказали что _вы_ делаете, чтобы Битрикс быстро работал. У себя внутри. Посмотрите на все комментарии до. Люди не просто так вас клеймят, такая уж у вас репутация. Вы зарабатывали ее годами. Многие наверняка помнят те старые сырцы, которые тогда в сеть утекли. Я их видел.

                                                              Я, в свою очередь, понимаю, что прошла куча времени. Видно, что подход изменился. Приятно, что вы стараетесь людям помогать. Но давайте так: есть немалое количество людей, которые могут настроить PHP. Расскажите нам, что происходит с другой стороны? Почему это вдруг Битрикс раньше работал медленно, а теперь быстро?

                                                              Это было бы действительно интересно послушать. И это был бы огромный буст для имиджа.

                                                              P.S. Аргумент «есть мнение, что с прямыми руками все будет работать быстро», которым вы выше воспользовались – это чепуха. Я вам также могу сказать, что «с прямыми руками можно написать систему, которая при любых настройках будет работать быстро». Оба этих заявления некорректны.
                                                                0
                                                                Обязательно напишем. Не лично я (я не занимаюсь разработкой кода). Но обязательно попросим разработчиков.

                                                                > Многие наверняка помнят те старые сырцы, которые тогда в сеть утекли. Я их видел.

                                                                Странный кстати, аргумент. :)

                                                                Весь Битрикс давно в исходниках. В том числе и демки, которые совершенно легально можно скачать с нашего сайта. :)
                                                                  +4
                                                                  > Странный кстати, аргумент. :)

                                                                  Это не аргумент тому, что вы плохие или хорошие. Это объяснение злобе и реакции людей. Когда они были приватными и утекли их все побежали читать. Теперь они открытые и читают лишь те, кому надо. Так уж люди устроены :). Поэтому вам стоит самим рассказать про различия. И все будут довольны.

                                                                  А за «обязательно напишем» — спасибо, ждем.
                                                                    +4
                                                                    Повторюсь — напишем, что уже делали.

                                                                    А сейчас могу поделиться планами на текущий год:

                                                                    conf.1c-bitrix.ru/winter2012/agenda/1686/
                                                                    conf.1c-bitrix.ru/winter2012/about/media/ (здесь видео «Развитие платформы «1С-Битрикс»: новый Framework, ORM, библиотека классов»)
                                                                      +1
                                                                      Вот вы бы свой Framework и ORM тут описывали и пиарили. Здесь, на Хабре, все же много технически подкованной публики, и им интересны именно технические решения, а не общее описание того, какие вы крутые. Это все так говорят, а в исходный код заглянешь — мама дорогая.
                                                                      +3
                                                                      Понял, что написал как-то очень коротко и скупо. ;)

                                                                      Обязательно посмотрите видео. Там не только про планы и новинки. Там описывается вообще история создания и развития платформы, те плюсы и минусы (которые мы, конечно, и сами видим), которые следуют из столь долгого периода разработки и поддержки.

                                                                      Думаю, что это на самом деле интересно.
                                                                  +7
                                                                  Кстати, сайт Премии Рунета (не Народного Голосования, а самой Премии), который мы сделали на Битриксе, спокойно выдерживал более 500 000 хитов в сутки. Всего одна железка, на которой помимо этого крутилось еще несколько проектов.
                                                                    –1
                                                                    irony
                                                                    херррасе, боррродач
                                                                    irony
                                                                    +3
                                                                    ааа, моя мечта исполнилась — автоматическая серверная оптимизация :)
                                                                      +1
                                                                      А я задам вопрос по поводу NTLM-аутентификации (которую вы упорно именуете авторизацией):

                                                                      После перехода на VMBitrix 3.1 с ее автонастройкой NTLM появилось две проблемы:

                                                                      1. При работе с сайтом иногда появляется запрос логина и пароля, можно нажать отмену и продолжить работу. Некритично, но пользователей приводит в замешательство.

                                                                      2. Пользователи иногда заходят под чужими логинами. Вот тут уже очень плохо, т.к. пользователь может получить админские права и наворотить чего захочет. У нас уже дважды был прецедент, когда девушке меняли фотографию, чтобы подшутить. Но вы ведь понимаете что это может кончиться куда печальнее?

                                                                      По второму вопросу тикет в техподдержке висит уже месяц. За это время было предложено:
                                                                      Попробуйте установить значение MaxKeepAliaveRequests в настройках апача равным 2

                                                                      Проблему это решило лишь частично, теперь, конечно, мне не надо пытаться попасть «под собой» 5-10 раз, но несколько раз в день пользователи логинятся под чужими аккаунтами.

                                                                      В блоге Рыжонина, кстати, дофига вопросов по обоим поводам.

                                                                      Вы еще не упомянули, что версии rpm-пакета (3.0) и образов VMWare/Hyper-V/… (3.1) различаются, причем критично: в 3.0 нет NTLM-аутентификации и по старому руководству ее не поставить. И т.к. образа под XenServer нет, мне пришлось конвертировать образ VMWare, чтобы запустить его под XenServer'ом. Работает, кстати, без проблем в данном отношении.
                                                                        +1
                                                                        А, в общем, BitrixVM — штука классная, мне много времени сэкономила.
                                                                          0
                                                                          По приведенной вами ссылки ничего не мешает в ручную настроить NTLM авторизацию.
                                                                          Различие в версиях BitrixEnv и BitrixVM было осознанным и вызвано применением патчей для nginx. В блоге кстати обращается внимание на данный факт. В дальнейшем данные изменения войдут в BitrixEnv.

                                                                          По вашему обращению создана задача в отдел разработки, в этом месяце ожидаем её решения.
                                                                            0
                                                                            Я обычно голословных заявлений не делаю. С ходу по старому гайду настроить не получилось, потому и занялся конвертацией образа. Времени детально разобраться в чём проблема не было.
                                                                          +5
                                                                          Почему на крупнейших хостингах рунета пользователей битрикса гонят тряпками на «специальные тарифы Битрикс» которые в 2-3 раза дороже обычных, а на других сайт тормозит?
                                                                            0
                                                                            Они просто не умеют его готовить! :)

                                                                            Куча крупнейших хостингов любят пользователей Битрикс. Дают подробные инструкции по установке и настройке самых популярных CMS (в том числе и Битрикс, например, hosting.nic.ru/cms/bitrix.shtml). И показывают 35 единиц в нашем мониторе производительности на тарифе за 330 рублей («201»).
                                                                              0
                                                                              т.е. вместо того, что-бы оптимизировать битрикс под тот хостинг который массово предлагается на рынке (дефолтов LAMP в популярных дистрах), вы предлагаете перенастроить хостинг для «оптимизации под битрикс». В т.ч. преднастроенный образ VM.

                                                                              Для потребителя это выглядит как:
                                                                              — хостинг под битркис настроить сложно.
                                                                              — большая часть хостеров не умеет настраивать хостинг под битркис

                                                                              Если бы авторы drupal выпустили DrupalVM с оптимизацие под друпал, по причине того, что «остальные дураки и настраивать не умеют» — я бы выпал в осадок.
                                                                                +2
                                                                                Вы совершенно правы. Хостинг надо настраивать. Под любую систему. Неважно, Битрикс это или нет.

                                                                                И Битрикс, точно так же, как и любая другая система, скорее всего, встанет и будет работать на среднестатистическом хостинге с дефолтными настройками. Только максимума производительности не даст.

                                                                                Как и любая другая система.
                                                                            –6
                                                                            Прошу меня простить, но Битрикс унылое гавно.
                                                                              –2
                                                                              Зачем так активно минусовать, я разве не прав?
                                                                                +2
                                                                                не прав.
                                                                              –1
                                                                              А знаете почему так негатива много? Просто вы тут одни хабре «мы крутые у нас все так все замечательно» а другие цмс если что то и пишут то «что и как сделать и что нового».
                                                                                0
                                                                                habrahabr.ru/company/bitrix/blog/

                                                                                Пройдитесь по последним постам. Как раз про «как сделать» и «что нового».

                                                                                Даже этот пост, строго говоря, про то, «что нового в VMBitrix». :)
                                                                                0
                                                                                Так а я не понял как же все таки «заставить сайт летать и сэкономить десятки часов системного администрирования», потому что все что написано мы уже знаем давно.
                                                                                  0
                                                                                  Значит, этот пост — не для Вас. Так бывает. :)
                                                                                  0
                                                                                  >> PHP как CGI

                                                                                  Ngnix + fastCGI — почему нет?
                                                                                    +3
                                                                                    FastCGI — пожалуйста. Это совсем не то же самое, что CGI.
                                                                                      –2
                                                                                      About FastCGI
                                                                                      FastCGI is simple because it is actually CGI with only a few extensions.
                                                                                    +1
                                                                                    Многоуважаемый adamant три банальных вопроса:

                                                                                    1. С каких пор «Веб-окружение» реализовано под Fedora 16 (официальная информация с сайта гласит Fedora 12-15. На вашем форуме до сих пор красуется надпись «Пакет для Fedora появиться позже»)?
                                                                                    2. Интересно услышать о технической поддержке «Веб-окружения» (на сколько я знаю официально она не осуществляется)
                                                                                    3. Ну и наконец, подскажите рецепт: как добиться коэффициента производительности хотя бы 30 на Windows 2008 R2?
                                                                                      +1
                                                                                      На данный момент поддерживаются версии Fedora 12-15. Поддержку 16 версии постараемся добавить в ближайшее время.
                                                                                        0
                                                                                        1. Вам ответил Николай ниже. 16 в исходном посте — моя ошибка, прошу прощения.

                                                                                        2. Тех. поддержка по веб-окружению — на форуме разработчиков: dev.1c-bitrix.ru

                                                                                        3. Нужно смотреть монитор производительности, где именно узкие места. Скорее всего — диск. Нужны детали.

                                                                                        Но в целом для приложений, использующих PHP+MySQL, производительность на Windows платформе всегда ниже.
                                                                                        +2
                                                                                        Коллеги, огромное спасибо за все отзывы и замечания! :)

                                                                                        Несмотря на дух и настрой некоторых комментариев :), очевидно, что тема поста крайне важна. А информация — для многих полезна. Добавление 107 раз в избранное — как раз говорит об этом. :)
                                                                                          –5
                                                                                          Хм… я добавил в избранное ради того, что бы начальству показать да и тем, кто пожелает на битриксе сайт делать ссылочку скинуть на комментарии :)
                                                                                          –2
                                                                                          Вопрос конечно не в кассу…

                                                                                          Но вот интересно почему 1c-bitrix.ru хоститься на amazon'е радуя длиными пингами…
                                                                                          не взирая не на свои собсвенные «иновационые» решения на благо людей
                                                                                          www.1c-bitrix.ru/products/cms/new/#tab-webcluster-link

                                                                                          ни на список «партнеров»
                                                                                          www.1c-bitrix.ru/partners/hosting.php#tab-vm-link

                                                                                          и при этом вояет простыни текста на тему «Как заставить сайт летать...»
                                                                                          похожу чегото я не понимаю…
                                                                                            –1
                                                                                            также никогда не понимал почему на амазоне…
                                                                                              +4
                                                                                              Ответ на этот вопрос Сергей Рыжиков неоднократно озвучивал. Узнать его можно, например, из видео с CodeFest2011 (можно послушать чуть-чуть введения, а можно перейти сразу к 2:30, где объясняются причины)
                                                                                                +3
                                                                                                > Вопрос конечно не в кассу…

                                                                                                Точно.

                                                                                                1. Веб-кластер у нас используется.

                                                                                                2. Список хостеров — в основном, для небольших и средних проектов. Shared хостинг, VPS… Проекты уровня нашего собственного сайта — это всегда индивидуальное решение.

                                                                                                Какая связь исходного поста и Вашего текста?
                                                                                                +1
                                                                                                Эту виртуальную машину ставили неоднократно (еще с версии 1.6), используем в работе: поставил за полчаса и уверен в том, что все настроено так, как надо. У нас сисадминов нет, только программисты, так что — отличный вариант. Для маленькой и средней компании — точно. Большая может себе позволить потратить время своего админа.
                                                                                                Но что-то мне подсказывает, что результат, если и лучше, то ненамного: надо знать, какие профи (и как!) работают в команде Битрикса и сколько времени они отрабатывали эту машину.

                                                                                                PS уже ходят слухи о версии 4…

                                                                                              Only users with full accounts can post comments. Log in, please.