Давайте разберемся в этом вопросе.
[spoiler]
Подтекст вопроса обычно такой: "ваш тест не правильный, раз он не распознает наше железо".
Ответ: "мы и не пытаемся распознать ваше железо, мы показываем как работает наш продукт на вашем железе относительно того, как он может работать".
Чтобы понять смысл этого утверждения, надо знать, как мы получаем оценку.

Эта цифра - есть величина, обратная времени исполнения ядра продукта [среднему на 10 измерений].Т.е. на основе приведенной картинки можно сказать, что публичная страница сайта с пустым шаблоном (например, версия для печати), с пустой рабочей областью будет создаваться за 1/40,32 или 0,0248 сек.
Обратите внимание, мы получили "Среднее время отклика".

Если говорить проще, то сервер сгенерирует 40 [пустых, но с подключением ядра] страниц в секунду.
А значит, она не вычисляется на основе "попугаев", приведенных ниже относительно файловой системы, работы базы, сессий и почты. Эти цифры нужны для того, чтобы помочь системному администратору найти узкое место (если такое есть). Оценка производительности всегда обратна величине среднего времени отклика.
Если так,
почему же на хорошем железе php работает медленно?
Как ни странно, основным препятствием в этом вопросе являются сами администраторы.

На скриншоте видно, что наши рекомендации по оптимальной настройке php не выполнены.
- Потому что мы считаем, что эти параметры не значительны и существенно повлиять на производительность не могут.
На этом этапе важно победить себя и выполнить рекомендации. Если в силу каких-то причин затруднительно выпустить такую конфигурацию в продакшн (например, убрать ограничение open_basedir), попробуйте сделать это для теста и вы убедитесь, что может быть и быстрее.
Основные ошибки конфигурации
- Не установлен акселератор php
Наличие просто жизненно необходимо, в общем случае без дополнительных настроек страницы открываются в три раза быстрее, во столько же раз снижается нагрузка на процессор. Сегодня можно рекомендовать сборку , быстрее любого акселератора в два раза. К сожалению, на некоторых конфигурациях он работает не стабильно, тогда ставьте (в порядке приоритета) APC, EAccelerator, XCache. - Включено ограничение open_basedir
На shared хостинге сложно отделить клиентов друг от друга, самый простой вариант, который обычно используют: включить open_basedir, тогда на все операции с файлами происходит дополнительная проверка пути. Что существенно снижает производительность. Решением будет использовать свой экземпляр apache для каждого пользователя или установка дополнительных модулей на сервер для ограничения доступа. В случае своего сервера или VPS ограничение open_basedir ставить не нужно! Доступ ограничивается системой для пользователя веб сервера. - Не установлен или не настроен nginx
Хоть это напрямую не влияет на оценку производительности, но чрезвычайно важно для нагруженных проектов: вся статика (картинки, стили, ява скрипты) должна отдаваться nginx и не обрабатываться apache. Посмотрите логи доступа apache: там не должно быть ни одного запроса к статике! - Не настроена база данных
По возможности всегда используйте формат данных InnoDB, рекомендуемые настройки смотрите на странице монитора производительности "Сервер БД". Очень полезно также протестировать базу скриптом , который чрезвычайно прост в установке и полезен для оптимальной настройки СУБД MySQL. - Стоят не оригинальные драйвера оборудования
Особенно актуально для RAID контроллеров: при установке на Linux система обычно предлагает к установке open source драйвера, которые не всегда достаточно эффективно работают с оборудованием. Всегда ставьте оригинальные драйвера с сайта разработчика.
Как читать оценку подсистем
Мы не имеем прямого доступа к системным ресурсам, поэтому оценки, полученные средствами php, в большей степени отражают работу php, нежели "железа". По порядку пройдусь по всем, повторюсь по первым двум.
- Конфигурация
Собственно, оценка производительности. - Среднее время отклика
Цифра, на основе которой делается оценка производительности: обратная ей. - Процессор (CPU)
Делается большое число простых математических вычислений. Задача не распараллеливается, поэтому идет оценка работы одного ядра процессора. Когда сайт работает на VPS, здесь часто можно увидеть, что "зажат" процессор. - Файловая система
Этот тест показывает не столько работу диска, сколько работу php с файлами: создается, исполняется, удаляется большое число простых файлов. Данный показатель зависит от производительности файловой системы и эффективности работы php акселератора. В целом хорошо показывает, как работает php на данной конфигурации (без учета работы базы). - Почтовая система
Отправляется тестовое письмо на hosting_test@bitrix.ru. Содержимое письма: "This is test message. Delete it." Никакая служебная информация не передается! Если настроена отправка , этот показатель можно игнорировать. - Время старта сессии
Сессия стартует на каждый хит, поэтому это время будет прибавляться к работе каждой страницы. Проблемы обычно возникают, когда меняются настройки хранения сессий php так, что скапливаются сотни тысяч файлов сессий. - База данных (чтение/запись/удаление)
Отправляется большое число простых запросов в базу. Это очень утрированный тест: он не показывает, как база будет работать со сложными запросами на больших объемах данных. Очевидно, что для базы данных на локальной машины цифры будут выше, чем для базы на отдельном сервере. Это нормально.
Что важно знать
- Оценка зависит от редакции продукта
Раз мы замеряем время работы ядра, очевидно, оно будет зависеть от размера ядра. Для редации "Бизнес" со всеми включенными модулями оценка всегда будет ниже, чем на "Старте" на том же оборудовании. Эталонная оценка делалась на редакции "Бизнес". - Результат зависит от пользовательских функций в /bitrix/php_interface/init.php
Указанный файл подключается на каждый хит, в том часле и при работе административной части. Он не должен содержать запросы к БД и любые другие ресурсоемкие операции. - Оценка будет меняться в зависимости от нагрузки
Чем больше нагружен сервер, тем ниже будет оценка. Но даже при пиковой нагрузке она не должна опускаться ниже приемлемого уровня чтобы можно было говорить, что сервер справляется (например, не ниже 10 единиц, т.е. 0,1 сек. на страницу). - Цифра не показывает возможности масштабирования системы
Процесс веб сервера работает на одном ядре, а значит когда измеряется производительность без нагрузки, число ядрер процессора не влияет на результат. Другое дело под нагрузкой: многоядерная система в состоянии сохранить высокие показатели. - Для базы данных на отдельном сервере оценка производительности будет ниже
Когда речь идет о кластере, мы имеем масштабируемую систему: т.е. при увеличении наргузки она должна сохранять хорошие показатели. Но при моментальном замере времени открытия страниц без нагрузки мы неизбежно увидим небольшое замедление за счет межсерверных коммуникаций.
Заключение
Понимание того, как вычисляется и от чего зависит оценка производительности должно помочь по-другому взглянуть на эту цифру. Не надо стремиться к каким-то заоблачным показателям, возьмите ненагруженную систему, добейтесь хорошего значения (по сравнению с эталонным, а может быть ниже и это будет нормально). А затем возьмите нагрузочное ПО и посмотрите, как будет меняться величина при планируемой пиковой посещаемости на сайте. Убедидесь, что сервер не просто дает хороший результат, но и сохраняет его при нагрузке.
Нагрузочное тестирование отдельная тема, но сразу хочу сказать одно: не надо имитировать 100 параллельных пользователей, которые открывают страницы без перерыва. Между хитами обязательно должна быть задержка в несколько секунд (5-20), иначе это будет имитация DOS атаки. Если сервер будет тянуть 5 одновременных потоков без пауз, это очень и очень неплохо.
Если вы готовите к выпуску крупный проект или работающий проект испытывает трудности с производительностью, наша новая услуга поможет получить оптимальную производительность на вашем железе. Наши специалисты сделают анализ конфигурации сервера и дадут конкретные рекомендации по его настройке. Если удобно, мы можем сами сделать необходимые изменения.
Оценка зависит от редакции продукта
Раз мы замеряем время работы ядра, очевидно, оно будет зависеть от размера ядра. Для редации "Бизнес" со всеми включенными модулями оценка всегда будет ниже, чем на "Старте" на том же оборудовании. Эталонная оценка делалась на редакции "Бизнес".
Я всегда думал что это глюк. Недостаток информации приводит к недопониманию...
Эта цифра важна для конкретного сайта: скажем, зачем вам знать как будет работать "старт" если вы используете "малый бизнес"?
т.е. отключив все неиспользующиеся модули, можно приблизить оценку "бизнеса" к оценке "старта"?
или это не так?
В этом, Денис, и проблема была. Мы все стремились добиться лучших показателей путем штриховки нижних (понятно, что они тоже влияют, но косвенно и в очень разной степени). А тут "от оно чо". Наверное стоит это ремарку вынести прямо в табличку в мониторе производительности.
Да, этому вау-эффекту подвержены многие когда узнают правду. Но на самом деле, вы правильно делаете, что тюните нижние параметры, т.к. хоть и не напрямую, но косвенно оценка складывается из них: скорость работы базы, файлов и пр.
Однако, на самом деле в подавляющем большинстве случаев лучше чтобы несуществующие страницы отдавались nginx'ом.
Азы:
Вариант реализации на битриксе:
Вообще, конечно, для каждого конкретного проекта могут стоять свои исключения в конфигах.
Я вообще чего прицепился: сейчас все начнут выяснять, а почему это статика у нас отдается не через nginx и начнется вынос мозга хостерам, а те в свою очередь будут снова отвечать, что это все ваш битрикс глючный, мол, выбросьте его на помойку...
Поднимали этот вопрос с хостером, но у этих ребят естественная отговорка: "Мы не знаем, чего там ваша панель показывает, это всё выдумки Битрикса". Так вот, может можно как-то отдельным простым скриптом смоделировать и показать, что с файловой системой проблемы?
Иначе, получается, что проблему мы видим, но остаётся только кусать локти, т.к. мы не можем ни доказать это, ни исправить это (потому что непонятно, что исправлять).
Сначала надо узнать имя текущего диска
Файловая система 1K-блоков Исп Доступно Исп% смонтирована на
/dev/mapper/ddf1_raid0p1
Затем:
/dev/mapper/ddf1_raid0p1:
Timing buffered disk reads: 426 MB in 3.01 seconds = 141.74 MB/sec
Такое значение у меня получилось при 15000 единиц битрикса.
Если такой утилиты нет, сделайте так:
300+0 записей считано
300+0 записей написано
скопировано 3072000000 байт (3,1 GB), 24,7855 c, 124 MB/c
Это на запись.
И на чтение:
6000000+0 записей считано
6000000+0 записей написано
скопировано 3072000000 байт (3,1 GB), 21,7644 c, 141 MB/c
Затем
Если на диске мало места, уменьшите параметр count.
Виртуальная машина выдает около 7000 ед., то есть раза в два меньше, а вот результаты hdparm и через dd - около 20Мб/с. Зависимость какая-то уж очень нелинейная.
Причем бывают случаи, когда скачанная с сайта ВМ показывает в несколько раз бОльшую производительность ФС, чем сам хост, на котором она запущена.
Вообще странный тест, причем особого влияния на итоговую оценку не оказывает.
На одной конфигурации 2.66 показывает на другой 41.59 .
На первой конфигурации дебиан + панеличка + апач + мускул.
Конфигурация 2.66 30
Среднее время отклика 0.3763 0.0330 секунд
Процессор (CPU) 2.8 9.0 миллионов операций в секунду
Файловая система 2 205.0 10 000 файловых операций в секунду
На второй центр ос + виртуальная машина битрикса.
Конфигурация 41.59 30
Среднее время отклика 0.0240 0.0330 секунд
Процессор (CPU) 6.1 9.0 миллионов операций в секунду
Файловая система 8 575.2 10 000 файловых операций в секунду
Вывод который мы для себя определили, ставим виртуальную машину клиентам и тычим в большое количество попугаев
Пишите чаще!
Как ни странно, основным препятствием в этом вопросе являются сами администраторы.
ой и не говори, куда не глянешь везде не оптимально
Да, мы немного жертвуем производительностью ради этого.
Цитата
"Как ни странно, основным препятствием в этом вопросе являются сами администраторы."
Судя по вашему аляпистому дизайну огнелиса, это видно ))
А вообще при покупке "много ядер и много железа" беда состоит не в этом, а в том, что нет сис.админа способного настроить сервер и-или нет программиста, а лучше бы что бы их было сразу оба. Сказывается желание сэкономить при покупке чудо инструмента.
Если же говорить в частности о программистах (высокого уровня) - то это правило этикета, измерять программно нагрузки своего приложения на железо, именно: проц, опаративная память, время выполнения кода.
Но теперь я наконец знаю, откуда беруться попугаи
Денис, жду очередных интересностей. Они редкие - но меткие
Следующей бы темой поподробнее разжевать детали настройки БД. Многим было бы полезно.
Для разных платформ нужно проводить отдельные тесты.
Сейчас эти показатели вводят в заблуждение клиентов win пользователей.
Скажем, можно сравнивать оценку на разных серверах на той же редакции Битрикса. Где оценка выше, сайт будет работать быстрее.
Не секрет, что для веб приложений linux - более производительная система, чем windows. Да, на том же железе на windows ваш сайт будет работать медленнее.
Они видят маленькие цифры, говорят сделайте чего-нибудь.
По вашему получается необходимо предложить сменить ОС. Я бы судовольствием, но выбор linux даже не рассматривается клиентом.
Ваш тест в данном случае показывает преимущество linux пред windows, а не сравнивает собвтенно bitrix. Такой тест не может быть эталоном в разных системах отсчета.
Если у вас 2-3, значит есть куда расти.
Не вижу проблемы: почему нельзя открыто клиенту сказать, что за удобство администрирования в windows надо несколько жертвовать производительностью?
denis@denis:/tmp> wget mysqltuner.pl
--2011-02-21 12:01:00--
Распознаётся mysqltuner.pl... 174.143.142.58
Устанавливается соединение с mysqltuner.pl|174.143.142.58|:80... соединение установлено.
Запрос HTTP послан, ожидается ответ... 302 Found
Адрес: [переход]
--2011-02-21 12:01:01--
Устанавливается соединение с mysqltuner.pl|174.143.142.58|:80... соединение установлено.
Запрос HTTP послан, ожидается ответ... 200 OK
Длина: 39054 (38K) [text/plain]
Сохраняется в каталог: `mysqltuner.pl'.
100%[==================================================================>] 39 054 44,6K/s в 0,9s
2011-02-21 12:01:03 (44,6 KB/s) - `mysqltuner.pl' сохранён [39054/39054]
denis@denis:/tmp> head mysqltuner.pl
#!/usr/bin/perl -w
# mysqltuner.pl - Version 1.1.0
# High Performance MySQL Tuning Script
# Copyright © 2006-2009 Major Hayden - major@mhtx.net
#
# For the latest updates, please visit
# Subversion repository available at
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
2) Но Битрикс развивает направление веб-спарк и талкал собственно нас на мысль, что мы должны подружить веб Майкрософт с Битрикс на ПХП…. Или вы нам рекомендуете делать проекты на ASP .NET ?
Хочу ответить, что многие крупные клиенты не хотят администрировать ничего, кроме Майкрософт Сервер со связкой MS SQL и что вы нам прикажете делать с ними. Рубим сегмент и всех разом на линукс?
Но из неё как-то само собой вытекает, что задача хостеров - это оптимизация серверов под взаимодействие непосредственно с Битриксом. Такой оптимизм со стороны разработчиков внушает оптимизм хостерам, но что делать с клиентами, которые используют другие движки, требующие других настроек? Или Битрикс настолько велИк, что прям любой хостер должен заводить специальные сервера под специальные Битрикс-тарифы?
Извините, если сарказм перебарщивает, но... есть некоторая усталость от этих тем, надеюсь на одной из следующих ХО можно будет более предметно пообщаться.
Иными словами, Джумла будет работать быстрее там, где оценка производительности Битрикса выше.
>/
Озадачился таким вопросом. Установил Корпоративный портал на пустой сервер. Редакция "Бизнес-процессы". Портал пустой. Сервер тоже. Оценка производительности, мягко говоря удивила:
21.31
- Платформа SR1625URSASR Urbanna, i5520.
- 2 x Quad-Core Intel® Xeon® E5606, 2,13ГГц, LGA1366, 8M, 4,8GT/s.
- 10 x DDR3 ECC Reg 1333, 20 Гб. По 3 канала на процессор.
- 4 x 500ГБ, 2.5", 10000 об/мин, 64МБ, SATA III, RAID 10.
Система Ubuntu 12.04 LTS. Меры по увеличению производительности, которые были предприняты:- В качестве Frontend установлен nginx
- Установлен акселератор APC (apc.shm_size 512M)
- База MySQL вынесена на отдельный SSD Диск (/var/lib/mysql)
- Файлы Битрикса вынесены на отдельный SSD диск (/var/www)
- Кеш Битрикса (cache, managed_cache) вынесен в tmpfs в память
- tmp MySQL вынесен в tmpfs в память
Настройки MySQLПри этом нагрузки на железо по iotop, htop, top особо не видно. Что еще можно оптимизировать?
Описание кейса:
1. У клиента на сервере стоит БУС 12.5 с одним типовым решением.
Замеры производительности:
2. На том же самом сервере стоит БУС 14.5 с другим типовым решением.
Замеры производительности:
Как видно из скриншотов -- замеры сильно различаются практически по всем полям...
Вопросы:
1. Влияет ли версия БУС на замеры из первой вкладки "Конфигурация" (процессор, файловая система, БД)? Если да, то на сколько сильно?
2. Влияет ли на замеры из первой вкладки "Конфигурация" (процессор, файловая система, БД) используемое с БУС Типовое решение? Если да, то на сколько сильно?
3. Как еще можно объяснить разный результат, что может на него влиять (количество товаров в БД, обмен с 1С, посещаемость итд)?
В CentOS - отключил APC, подключил Opcache и о чудо, оценка 64.66!!!
Когда уже закончатся - танца с бубном и выбором оптимизатора, сначала eAccelerator, потом xCache, потом APC и вот OPcache...
как вама такая конфигурация сервера:
Железо:
Intel Xeon E5620, 2.4Ghz 4 ядра
Оперативная память 6 GB
Обьем диска 80 GB SSD
Трафик безлим
Попугаев 13 (( и очень низкие показатели
Где копать на что обращать внимание? Статьи рекомендации. Помогите пожалуйста разобраться
Я очень сильно усомнился в адекватности этого теста, такое впечатление что это чистой воды маркетинг что бы избранных провайдеров рекламировать таким образом, вот мол смотрите как много у нас попугаев супер железо идите к нам и покупайте хостинг за бешеные деньги...
Возможно не к месту но с каждым днем в нашей стране растет желание обобрать как можно быстрее и больше покупателя, не исключение видимо и Битрикс.
NVMe
SSD
тоже обеспокоен низкой оценкой производительности на собственном, избыточно мощном железе.
в частности на рабочем портале оценка файловой системы меньше сотни
на свежеустановленном, пустом К.портале на VMBitrix под Hiper-V в районе 3000 при эталоне в 10000
Возможно ли описать какой-то алгоритм поиска и решения проблемы?
Поддержка пока отделывается общими фразами. (((
Например:
-гипервизор, ОС для виртуалки
-особенности сборки
-ошибки системы
-тип акселератора, порядок их перебора
-тип железа
-проблемы с драйверами
-проблемы RAID
-.........
Помогите структурировать пожалуйста!