Измерь его правильно! Краткое описание общепринятого метода оценки производительности DB серверов

























Сообщество программистов (администраторов) 1С является одним из самых замкнутых на себя.
Тот же JAVA senior без особых вопросов напишет код на PHP или на Python, если этого потребует обстановка.
1Сники же и powershell и bash и PHP и все остальное с разной степенью успешности реализуют на 1С.
В последнее время ситуация немного меняется, классическое высшее образование программистов уже не ограничивается ассемблером, бейсиком и фортраном.
Никто не падает в обморок при виде
class HelloWorld {
public static void main(String[] args) {
System.out.println(«Hello World!»);
}
}
Попробуем покуситься на тест Гилева © и узнать, как без него обходятся DBA админы остального мира, слабонервных прошу удалиться, остальных прошу под кат…

Россиянин за границей пытается купить презервативы в аптеке.
Естественно — языковой барьер, не знает как объяснить. Видит — аптекарь мужик.
Достает свое хозяйство, кладет на прилавок и рядом 10$. 
Аптекарь не долго думая, достает свое и со словами:- Не уверен — не играй! забирает все деньги.

Что вам даст прочтение этой статьи:

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

Скажу сразу и жирным шрифтом:
Я не против решения всего и вся на 1С, а перед теми кто их создает, вообще снимаю шляпу.
Но иногда робко спрашиваю зачем ?

После того как об меня сломалось очередное копье, долгими осенними вечерами написал я эту статью.

По большому счету любой DBA, находящийся за пределами 1С, ничего нового в ней не откроет.
Теоретически, он может даже сказать: Все, расходимся, нас обманули. И спокойно продолжить слушать музыку у сервера (или музыку сервера, кому как угодно).

Но в сообществе 1С и неожиданно у некоторых облачных провайдеров, публикующихся на Хабре, обнаружилось непонимание темы.
Масла в огонь подлил журнал "Системный администратор"  (!) 
№5 за 2024 г. с вопросом:
Сервер набрал примерно 17 баллов, в то время как десктоп – более 40… Так что же, сервер 1С лучше разворачивать на бюджетном железе, купленном в ближайшем киоске? 
Продолжу для них.

Зачем собственно пробовать что-то еще, если есть чудесный тест Гилева ©:

  1. Пожалуй самое главное ограничение теста Гилева © — это то, что провести его мы может только постфактум — установив 1С сервер.
    Кофе в постель могу сам себе подать. Но придётся встать, одеться,приготовить, раздеться, лечь и выпить. Жванецкий ©
    В добрые старые годы это не было большой проблемой — сервера были куском железа, а ключ 1С — USB.
    Пользуясь расположением поставщика можно было все тесты провести до покупки.
    Сейчас же сервера в облаке, а ключ программный (либо доплата за USB) и все не так просто.
  2. Тест идет по методологии TPC-A  (метода TPC-1C-GILV-A пока на сайте организации TPC не зарегистрировано) 
    И его второе ограничение, об этом сказано на сайте :
    Тест оценивает количество работы в единицу времени в одном потоке и подходит для оценки скорости работы однопоточных нагрузок
    То есть равные по скорости, но отличающиеся по количеству ядер процессоры дадут равные результаты.
    Хотя даже интуитивно понятно, что
    c Intel© Core i7 база будет работать быстрее чем с i3, i5.
  3. Это то, что его вообще нужно проводить. Правда, было бы неплохо, если бы сам поставщик предоставил результаты ?
    А еще лучше выбрать нужные результаты и под них собрать оборудование, хоть бы и виртуальное.

Еще раз внимание! 
Не против я этого теста, в конце концов можно мерить чем угодно, если это измерение дает повторяемость на различных конфигурациях софта/железа.

Переходим к теме:

Де-факто метод тестирования крупных провайдеров предоставляющих облачный хостинг (Alibaba Cloud к примеру или Google Cloud, на котором кстати, самое подробное описание работы) и удобная вещь в хозяйстве — HammerDB.

Методика тестирования не сложная, по сути напоминающая тот самый "Стандартный нагрузочный тест" из "Корпоративного инструментального пакета".
По классификации  www.tpc.org тесты близкие к 
TPC-C или TPC-H, но не такие полные.

Описаний по использованию — предостаточно, в том числе русскоязычных. 

Поэтому подробно расписывать ее не буду, опишу в общих чертах и больше про те грабли на которые наступил.
Самые большие — программа не работает с версиями MS SQL ниже 2008.

  1. Скачиваем программу с официального сайта www.hammerdb.com. Устанавливаем.(Можно взять поставку и в виде zip архива, ее достаточно распаковать)
  2.  Для последних редакций может потребоваться установить распространяемый компонент Microsoft Visual C++ для Visual Studio 2024, иначе она просто упадут с ошибкой.
  3. Создаем базу на SQL сервере (не обязательно Microsoft), название произвольное. Размер желательно сразу указать большой, чтобы рост файла не влиял на результаты теста. На Хабре горячие головы указывают под 200 Гб, но это на мой взгляд перебор. 
  4. Запускаем программу с клиентского компьютера. Выбираем тип сервера MS SQL и заполняем базу — Schema Build
    Требуется указать параметры подключения к серверу.
    Внимание! Программа будет строить строку подключения исходя из этих полей, поэтому совершенно не обязательно, что тип клиента в вашем случаем именно такой как указан по умолчанию.
    Скорее нет.

    Поэтому, если подключиться не удалось — нужно идти на сайт www.connectionstrings.com и там подбирать исходя из своих сервера и установленных клиентских компонент.
    Количество складов и виртуальных пользователей лучше поставить как на рисунке, тогда база будет приемлемого размера. (тот же Alibaba Cloud тестирует на этих величинах)
  5. Нажимаем Build
    и наблюдаем процесс заполнения базы данных
    Если все виртуальные пользователи стартовали -все идет по плану, если нет — первым делом проверяем строку соединения.
    Через некоторое время процесс завешается. Все флажки — зеленые. База готова к тесту.
  6. В ветке Driver Script повторяем параметры подключения и задаем "время разгона" теста и время его проведения
    Опять же значения можно взять с рисунка.

    Нажимаем Load и тестовый скрипт готов.
  7. Задаем количество виртуальных пользователей и не забываем установить флажок Show output
  8. Открываем вкладку Transaction Counter чтобы видеть результаты теста
  9. Нажимаем Run и следим за результатами теста. 
  10. Через некоторое время они стабилизируются
  11.  Или нет. Это значит в настройках сервера имеются проблемы. Или вы от жадности запустили больше виртуальных пользователей, чем он может обработать. 
  12. Тем кому не надоело смотреть картинки, могут продолжить. (Полный набор в хорошем разрешении в шапке публикации.)
    Поделюсь некоторыми наблюдениями.
  13. В тестах сравнивается Intel Core i5-6500 против i5-2500K. Почему для статьи выбраны они ?
    Есть достаточно большой обзор от technical.city где видно как Core i5-6500 бьет Core i5-2500K.
  14. Что получилось у меня:

    Процессор/Тест

    WinRar

    7zip

    HammerDB

    Тест Гилева

    i5-2500K

    5180

    14500

    249500

    35,71

    Core i5-6500

    5370

    17800

    395100

    34,72

    Все результаты на рисунках.

Подведение итогов

Самые правдоподобные результаты показали 7zip и HammerDB.

Обе программы портабельные и имея их с собой на флешке вы можете достаточно точно определить скорость "железа" у клиента.

Список использованной литературы и ссылки

 

На сладкое

Первым пяти желающим, проведу аналогичные тесты бесплатно, при разрешении публикации их результатов.
У кого есть возможность провести параллельные тесты "Стандартным нагрузочным тестом" — прославлю в веках.

Планы на будущее

  • Пополнить статью результатами тестов.
  • Попробовать HammerDB тест как нагрузочный.

Желающие поддержать статью могут скачать rds-performance_whitepaper_mysql-intl-en-2024-05-04 — это тест от Alibaba Cloud.

97 Comments

  1. nomadon

    Отлично, спасибо.

    Только помешьше бы в тексте извинений с посылом «не убивай, Гилев»

    Reply
  2. Dementor

    Статья отличная, хоть и начата с несправедливого наброса для привлечения внимания. Ни один мой знакомый джавист (и сишники тоже) не имеют ни малейшего желания разбирать говнокод на php и возится с тем же битриксом. А вот 100% знакомых адинэсщиков отлично пишут скрипты (некоторые не только на башне и павере, но и на питоне).

    Reply
  3. capitan

    (1) +100500! )

    Просто на Хабре меня за такие высказывания пинали не снимая ботинок, поэтому подстраховался.

    Reply
  4. h00k

    Всё это конечно хорошо, но при данном способе тестирования мы лишь сможем понять насколько хорошо будет работать сервер СУБД на конкретном «железе» либо виртуалке. Подобные тесты ни как не покажут влияния типа СУБД на производительность всей системы, не помогут оценить падение производительности при разнесении сервера 1С и сервера СУБД на разные физические / виртуальные сервера, не дадут оценить влияние настроек на производительность системы и т.д. Тесты же на 1С, например, тест Вячеслава или тест Антона (Fragster), всё это оценить позволяют, так-как отражают производительность всей системы «железо + сервер СУБД + сервер 1С».

    Reply
  5. itriot11

    Большая часть краткого описания не относится к теме публикации. Отсылки автора к замеру половых органов, в контексте темы и ресурса, отвратительны.

    Reply
  6. capitan

    (5)

    Про

    не покажут влияния типа СУБД

    не понял — ставьте и меряйте хоть MySQL & Redis

    производительность всей системы

    в режиме работы 1 пользователя

    Антон (Fragster) у него тест хотя и многопоточный, но не на реальных документах.

    При ваших пожеланиях — надо брать «Стандартный нагрузочный тест», не вижу другой альтернативы

    Reply
  7. itriot11

    (8) А я не про заголовок, а про громкий спич в анонсе, где было бы достаточно ограничиться последним предложением.

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

    Reply
  8. h00k

    (7)

    не понял — ставьте и меряйте хоть MySQL & Redis

    А что тут непонятного то?! Как тест работы СУБД на конкретном железе / виртуалке покажет с какой СУБД 1С-ка будет работать быстрее? Как на основании результатов тестирования, подобных описанному, решить что лучше, DB2, Postgree или MS SQL… и как лучше организовать размещение серверов СУБД.

    Reply
  9. h00k

    (7)

    При ваших пожеланиях — надо брать «Стандартный нагрузочный тест», не вижу другой альтернативы

    Бывает. А альтернатива есть, в виде теста Вячеслава, теста Антона, или своего какого-нибудь, позволяющих в общих чертах оценить производительность именно системы в целом.

    П.С.: И это не мои «пожелания», это объективная реальность. Нет смысла мерять гипотетическую скорость работы СУБД на конкретной железке, кроме тех случаев, когда уже известно, что «узкое место» именно СУБД. Описанный подход с успехом можно заменить запуском теста 7-зип да кристал диск марк…

    Reply
  10. davdykin

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

    Reply
  11. capitan

    (12) В нашей жизни иногда только юмор и спасает.

    И запоминается лучше.

    А кто захочет — тот и в пятне Рошаха призыв к экстремизму найдет.

    В следующий раз попробую написать сухим языком плаката )

    Reply
  12. capitan

    (10) Так этот тест — он как раз больше DB поддерживает

    Reply
  13. davdykin

    (11) Мне кажется вы не правы, и вот почему:

    1. У этого теста плюс в том, что можно запустить без лицензии 1С (ломалки не берем в расчет)

    2. Этот тест позволяет сравнить производительность самой субд, в том числе и ее тюнинга (что может быть удобней, чем мерить связку СУБД+1С Сервер, тестами Вячеслава и Антона)

    3. При выборе железа, на мой взгляд, этот тест будет коррелировать, может и не на 100%, но все-равно, с вышеупомянутыми тестами.

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

    Поэтому я считаю, что данный тест, скорее не замена, а некое дополнение, позволяющее произвести декомпозицию производительности 1С (т.е. сравнить при разных настройках отдельно производителность СУБД) к тестам написанным на 1С.

    Ну и считаю что такие статьи нужны, как минимум для дисскуссий разворачивающихся в коментах ))

    Reply
  14. davdykin

    (13)Это, в общем-то, был не камень в ваш огород, я считаю, что суть статьи, важнее стиля изложения )

    Reply
  15. capitan

    (11) в 90% процентах случаев «узкое место» именно СУБД и подходы к ней.

    И если видели — заголовок статьи —

    Краткое описание общепринятого метода оценки производительности DB серверов

    (11)

    Описанный подход с успехом можно заменить запуском теста 7-зип да кристал диск марк

    — согласен — так и написал

    Но если будете искать облачный хостинг — то обычно приличные провайдеры как раз HammerDB результаты покажут

    Reply
  16. capitan

    (15)Золотые слова )

    Reply
  17. capitan

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

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

    Reply
  18. capitan

    (11)Если быть до конца последовательным — все тесты будут гипотетические — тогда надо и конфигурацию 1С при тесте учитывать.

    И время года)

    У бухгалтерии например — ярко выраженная сезонность.

    Reply
  19. h00k

    (14)

    Так этот тест — он как раз больше DB поддерживает

    Да не о том я. С какой из возможных СУБД 1С-ка будет работать оптимальней подобный тест не покажет. Сто раз уже, в разных темах, по этому вопросу дискутировали. Мы же с Вами, года два-три назад, эту тему ещё и относительно конкретных релизов платформ разбирали.

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

    Reply
  20. capitan

    (21) Тогда мир )

    Reply
  21. herfis

    Я, возможно, протормозил, но каким боком в результаты тестирования воткнулись 7zip и WinRar?

    Какова была методика замеров по ним? И насколько может быть адекватно сравнение этих результатов с однопоточным тестом СУБД?

    Reply
  22. h00k

    (15)

    Мне кажется вы не правы, и вот почему

    1. У всего есть своя цена. Наиболее точную оценку может дать, например, тест-центр от 1С, и он тоже стоит денег.

    2. Как бы не был производителен сервер СУБД, в отрыве от настроек сервера 1С эти данные, в большинстве случаев, бесполезны. Например, сервер 1С на другом физическом сервере и взаимодействие идёт по TCP, со всеми вытекающими. Другой пример — сервер СУБД «съел» все доступные ресурсы физического сервера из-за кривой настройки сервера.

    3. При первоначальном выборе железа да, пойдёт, как и любые другие. Ещё хорошо пойдёт для «тонкой» настройки СУБД, о чём я упоминал выше.

    4. 1С это OLTP-система, поэтому однопоточный тест Вячеслава очень неплохо показывает, насколько пользователям будет комфортно работать с 1С на конкретном сервере, а тест Антона сколько пользователей сможет комфортно работать.

    Статьи нужны, не спорю, но статья Андрея оставляет основные моменты «за кадром», потому и появился уточняющий применение комментарий.

    Reply
  23. h00k

    (23)

    Я, возможно, протормозил, но каким боком в результаты тестирования воткнулись 7zip и WinRar?

    Ну типа ими тоже можно мерить 😀

    Reply
  24. capitan

    (24)1. Наиболее точную оценку может дать только APDEX встроенный в базу, но тогда будет уже поздно.

    2. При отсутствии очевидной кривизны в настройках все же скорость работы упирается именно в сервер СУБД.

    Так то можно электропитание выставить в экономия энергии и каюк)

    3. Ничего не имею против — только читали вступление — в samag.ru человек пытается натянуть сову на глобус производительность сервера на производительность десктопа по тесту Гилева. Что это дает ?

    Reply
  25. herfis

    (25) Ну, если никаких корреляций с тестом СУБД не пытаться проводить, тогда ок. Просто если сравнивать строго однопоточную нагрузку, то было бы интереснее, ИМХО.

    Reply
  26. capitan

    (23)(23) 7zip -меряет процессор и память в связке — и по нему тоже есть большая база статистики + CrystalDiskMark = самая грубая оценка сервера

    Простой пример — вы в магазине серверов, у вас в организации два сервера и админы божатся, что они одинаковые по скорости, а бухи, что разные.

    Вы же не будете КИП покупать сразу ?

    Там интереснее другое — что WinRar не заметил разницы, а 7zip — увидел.

    Не зря все им меряются

    Reply
  27. capitan

    (27)

    корреляций с тестом СУБД не пытаться проводить

    вот тут не понял

    Что по вашему влияет в основном на скорость СУБД (процессор, память, диск, сеть, настройки)?

    Аналогично — для всей связки (СУБД, сервер 1С, сеть, настройки)

    Кстати вот интересная была бы тема — померять, жалко железячники здесь не водятся.

    Reply
  28. herfis

    (29) Я к тому, что «лобовой» тест архиваторов обычно грузит все ядра (или типа того). А с тестом СУБД мне тут не до конца понятно, насколько сопоставимо будет. Поэтому мне кажется, что адекватнее сравнивать строго однопоточную нагрузку (если как-то ограничить использование ядер архиватором — как минимум, вроде есть сторонние утилиты, позволяющие это делать).

    Reply
  29. h00k

    (26)

    1. APDEX — это APDEX, с его помощью мы фиксируем текущую производительность, а для нагрузочного тестирования он не совсем подходит.

    2. Не, не то, тогда всё будет тормозить. Я же привёл пару примеров, когда тест на СУБД будет показывать, что всё восхитительно, а по факту система еле шевелится.

    3. Как что?! Дефицит сов.

    Reply
  30. capitan

    (31)Ну вот, значит если я хоть пару сов спасу — значит есть толк от этой статьи )

    А давайте такой же вопрос как и уважаемому herfis

    Что по вашему влияет в основном на скорость СУБД (процессор, память, диск, сеть, настройки)?

    Аналогично — для всей связки (СУБД, сервер 1С, сеть, настройки)

    При всех прямых настройках разумеется.

    Reply
  31. capitan

    (30)в 7zip как раз можно выставить число ядер для теста, но все равно не очень понятно почему однопоточную ?

    Reply
  32. capitan

    Есть предложение.

    У кого есть 2 мин выскажите свое мнение

    Опрос то уже наверное не прикрутить к публикауции (

    Что по вашему влияет в основном на скорость СУБД (процессор, память, диск, сеть, настройки)?

    Аналогично — для всей связки (СУБД, сервер 1С, сеть, настройки)

    При всех прямых настройках разумеется.

    Reply
  33. fishca

    Это тест сервера SQL, но ни как не Сервер 1С + SQL — а

    Reply
  34. capitan

    (35)Офигеть. Если бы мне в (6) не запретили, я бы сказал: Вот это пиписьк@ — 78 попугаев и еще одно попугайское крылышко )

    Как раз это тест всей платформы целиком

    Reply
  35. capitan

    Тут меня еще админ сильно пинает и кричит что я чипсет забыл упомянуть.

    Пусть будет (процессор, память, диск, чипсет, сеть, настройки)

    Он бы еще флоповод вспомнил )

    Reply
  36. fishca

    При этом есть потенциал еще поднять +5-7 попугаев в данном тесте на данном сервере ;), если уж пошло измерение 🙂

    Reply
  37. fishca

    Так что практически вплотную приблизились к эталонному тесту: http://www.gilev.info/2017/12/blog-post.html

    При этом процессоры предыдущего поколения используются.

    Reply
  38. fishca

    (34) На скорость по максимуму влияет частота процессора, частота памяти (объем вторичен)

    Reply
  39. capitan

    (39)Интересно будет на i9 померять. Опять десктоп сервер уест )

    Reply
  40. fishca

    (41) интересно посмотреть на EPYC, i9 — фактически ничего нового

    Десктоп всегда уест сервер, т.к. для сервера важнее надежность в угоду скорости

    Reply
  41. capitan

    (42)

    EPYC

    Мне бы было страшновато в продакт собирать на AMD, воспоминания не очень.

    Reply
  42. Silenser

    (24)Полностью поддерживаю, в особенности учитывая последнюю тенденцию ставить на один сервер и 1С и SQL (или любую СУБД). Если ваша задача проверить, как автомобиль ездит по бездорожью, то логично взять автомобиль и вывезти его за город на бездорожье.Нет особого смысла в помещении завозить песок и наливать сверху воду.

    Есть два больших подтипа тестов: синтетические (воспроизводящие нагрузку от конкретных приложений) и алгоритмические (выполняющие определенный алгоритм, который сильно грузит какие-то подсистемы компьютера). Тест-центр или тест Гилева — синтетические тесты, основная задача которых сравнить, насколько хорошо данная система подходит для работы 1С+СУБД. Насколько я понял, то что предложил автор статьи, больше похоже на алгоритмический тест, навроде IOMeter, который тестирует СУБД.

    Reply
  43. capitan

    (44) Вы просто начали читать с комментариев видимо.

    Оба теста из серии TPC: TPC-А и TPC-C

    Reply
  44. davdykin

    (24)

    (24)

    OLTP-система

    1. Тут вопрос не о цене, а о том, что этот инструмент позволяет сравнить производительность одной и той же СУБД с разными настройками, что на мой взгляд большой плюс, т.к. если вы пишите обработку с 5 методами, возможность отладки одного из них — это плюс, хотя конечно всем понятно, что конечный результат зависит от результата и оптимизации каждого из этих методов.

    2. Согласен, что есть факторы которые на прекрасной настроенной СУБД убьют производительность в продакшине, но вот то что вы на плохо настроеной СУБД сможете добиться хороших результатов — это вряд ли

    3. Считаю, критикуя — предлагай, я не знаю «любых других тестов» для сравнения железа для СУБД

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

    На мой взгляд заголовок статьи — соответствует содержанию, там нигде не указано «Методика полной оценки производительности 1С», а так и сказано, что метод для оценки железа под СУБД.

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

    Reply
  45. Silenser

    (45)Ну это было бы откровенным неуважением к автору, который проделал большую работу. Тем не менее, личный опыт подсказывает, сравнение оборудования TPC тестами дает общее понимание, в то время как типовые нагрузочные тесты с использованием платформы дают уже окончательный вердикт. И отдельно я бы их никогда не рискнул использовать, т.к. есть куча особенностей, которые не всегда сразу можно увидеть. Ближайший аналог, оптимизация драйверов у видеокарт: вроде как FurMark дает высокий балл, а игра — тормозит.

    Reply
  46. capitan

    (47) То есть мы все же договорились что эти все тесты одного класса, а не синтетические и алгоритмические.

    А про то что нужен тест с использованием платформы спора нет — вопрос сможете ли вы его конкретно сформулировать и исполнить.

    Даже «Стандартный нагрузочный тест» лучше которого ничего не придумаешь, в методике оговаривается — померяйте для начала типовые процессы своих пользователей чтобы интерпретировать наши результаты.

    Reply
  47. h00k

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

    В целом, для большинства случаев, наибольшее влияние на производительность сервера СУБД оказывают процессор и дисковая подсистема. Но, без нормальных настроек, да ещё и в кривой сети даже нормальные сервера живут плохо.

    Память, чипсет и т.п. составляющие, на современных системах, оказывает минимальное влияние на производительность и сильно пристально смотреть на них стоит только в тех случаях, когда из железки нужно выжать максимум.

    Reply
  48. Silenser

    (48)

    То есть мы все же договорились что эти все тесты одного класса, а не синтетические и алгоритмические

    Не могу утверждать, не специалист в этой области.

    (48)

    А про то что нужен тест с использованием платформы спора нет — вопрос сможете ли вы его конкретно сформулировать и исполнить.

    Да. В качестве 1го приближения — 1С нагрузочное тестирование или Гилевский тест. В качестве точной оценки — тестирование с тест центом по сценариям имитирующими бизнес-процессы конкретной компании. Обычно подобная работа стоит 300-900 тыр

    Зачастую разные версии платформы могут иметь «особенности», поэтому сервер под 1С и тестируют с использованием платформы.

    Reply
  49. capitan

    (50)

    В качестве 1го приближения — 1С нагрузочное тестирование

    Откуда такая инфа?

    Честно говоря до сегодняшнего дня не доводилось слышать, что это 1 приближение

    Более того руководство по КИП не рекомендует использовать сценарное тестирование в качестве нагрузочного.

    А тестируют с использованием платформы потому что это как правило замысловатый кластер 1С с не менее замысловатым хранилищем.

    Тестировать его по частям нет смысла.

    Это если работа стоит 300-900 тыр

    Reply
  50. Gilev.Vyacheslav

    (0)

    Пожалуй самое главное ограничение теста Гилева © — это то, что провести его мы может только постфактум — установив 1С сервер.

    Если у вас нет сервера 1С, то извините, зачем то что и зачем вы собрались тестировать? Мой тест предназначен не для оцени железа, а для оценки 1С на этом железе. А если у вас нет «1С», то что тестируете?!

    Reply
  51. Gilev.Vyacheslav

    (0)

    То есть равные по скорости, но отличающиеся по количеству ядер процессоры дадут равные результаты.

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

    Если у Вас будет два процессора с одинаковой базовой частотой, и теоретически с одинаковой частотой заявленной в турбобусте, то на практике СВОЕ СЛОВО еще скажут c-states и p-states при наличии схемы энергоснабжения в режиме максимальной производительности. С очень высокой вероятностью при реальной работе частоты будут разными имя благодаря разному количеству ядер, которые окажут влияние на конечную частоту. Возможен сценарий настройки когда одно ядро на себя отбирает максимальную частоту, а другие ядра значительно медленнее, возможен сценарий настройки когда по ядрам раздается среднее арифметическое турбобуста и базовой.

    В теории разницы между теорией и практикой нет. На практике это не так.

    Reply
  52. Gilev.Vyacheslav

    (0)

    Это то, что его вообще нужно проводить.

    Вот тут я выпал в осадок. Да вы же тут же рядом свой тест проводите. Вам бы в передачу «Где логика» )

    Reply
  53. Gilev.Vyacheslav

    (0)

    Де-факто метод тестирования крупных провайдеров предоставляющих облачный хостинг

    Можете посоветовать крупного облачного провайдера, чтобы я развернул типовую ERP на 1000 человек и она не тормозила в облаке?

    Reply
  54. Gilev.Vyacheslav

    (42) а вот и нет, некоторые голды шустрее

    Reply
  55. Gilev.Vyacheslav

    (38) учтите что разные версии платформы дают разные баллы

    Reply
  56. Gilev.Vyacheslav

    (5) если люди с однопоточным тестом не могут разобраться то мы свой многопоточный тест умышленно не выкладываем

    Reply
  57. Gilev.Vyacheslav

    (7) если человек водить машину не умеет, то все равно какая марка автомобиля

    Reply
  58. Gilev.Vyacheslav

    (14) а версии платформы 1С он разные может сравнить?

    Reply
  59. Gilev.Vyacheslav

    (26) советую открыть для себя настройки биос

    ну и эту статью почитайте https://infostart.ru/public/147259/

    Reply
  60. Gilev.Vyacheslav

    (32) влияет все

    Reply
  61. Gilev.Vyacheslav

    (51) вы путаете нагрузочное и сценарное тестирование

    Reply
  62. Gilev.Vyacheslav

    (20) ну по вашей логике надо учитывать код, который будет дописан в конфигурацию через полгода в будущем

    Reply
  63. Gilev.Vyacheslav

    (34) у меня тоже есть предложение

    приходите к нам на курсы подучитесь

    Reply
  64. Gilev.Vyacheslav

    (35) тест в файловом варианте делать не стоит

    тест надо делать в том варианте, в котором будет система эксплуатироваться

    Reply
  65. Silenser

    (51)Инфа из личного опыта. Если перед вами стоит задача не абстрактно измерить оборудование в попугаях, а конкретно выдержит ли ваш сервер такое-то количество пользователей под такой то конфигурацией 1С, как вы будете выкручиваться?

    Обычно реализуют параллельную работу по двум направлениям.

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

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

    ИМХО, разумеется.

    Reply
  66. capitan

    (67) Мне кажется вы путаете мечты и реальность.

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

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

    В методичках к КИП есть описание как моделировать это Стандартным нагрузочным тестом.

    Про какие то реально работающие унифицированные решения со сценариями имитирующую нагрузку в типовой конфигурации я не слышал.

    Если поделитесь ссылкой — с интересом посмотрю.

    А просто сэмулировать проведение 10000 накладных и запись 100000 справочников в БП — такая обработка и у меня есть, смотрите профиль )

    Reply
  67. Silenser

    (68)

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

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

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

    (68)

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

    Пиковая нагрузка ограничена во времени всегда и вопрос о ее решении можно отсрочить, как минимум, административными способами и решить позже. Если система не тянет нагрузку в принципе, то решение быстро найти уже не получиться. Простой пример, у вас 8.3, без совместимости, т.е. база версионник, вы строите кучу отчетов, в которых используются временные таблицы. Опасным местом становится временная база tempdb. Система у вас работает, нагрузка нормальная. Но увеличилось число пользователей, выросла нагрузка и отчетов стало больше, частота использования и очереди к временной базе выросли и система встала, причем вся, т.к. версионник без временной базы не работает. Это и называется особенностью вашей системы, потому что в другой все может быть по другому и нагрузочный тест это не покажет, он покажет типичные задачи — проведение документов, расчет итогов, построение отчетов.

    Теперь о нагрузочном тесте, прямая цитата с сайта 1С:

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

    Иными словами, это измерение системы в баллах, которые дадут общее представление о том, насколько хорошо сервер подойдет для среднестатистической конфигурации 1С, не вашей конкретно, а некой абстрактной, выполняющей среднестатистические абстрактные задачи. Он безусловно лучше теста, который тестирует только СУБД, диск, память или проц, но на конкретный вопрос о именно вашей конфигурации он ответа не даст, то есть даст, но с некоторой степенью вероятности, отличной от 100%.

    Reply
  68. capitan

    (72) Так я же не против — вы приведите ссылку где такой тест делают и как и вместе посмотрим.

    А так у нас пустословие пока идет.

    Что касается нагрузочного теста- там в комплекте идет методичка и в ней уже написано как отражать общий нагрузочный тест конкретно на свою конфигурацию. С формулами и достаточно понятно. Попросите у знакомых франчайзи они дадут почитать.

    Reply
  69. Silenser

    (73)Пример счета на подобные работы, названия продуктов там есть

    Reply
  70. capitan

    (79)Все. Теперь понял о чем речь.

    Просто мы с чего начали рубиться со слов

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

    а из принтскрина как раз видно — нагрузочные тесты не типовые — за них люди взяли 400К

    Reply
  71. capitan
  72. alex_sh2008

    (55)Зачем облако в начале года развернули тестовую среду на вмваре, 1С и скл поставили на оптан, сам сервер на 2 голд процессорах 3.4Ггц, связь между серверами 10гб, провели тест, показания средние, в момент теста реальные процессоры просто спали, суммарная нагрузка не превышала 30%, в такой среде тестировали sql сервер отдельно обрабатывал в среднем 10-12тыс пакетов в секунду без специальных настроек, 1С же с трудом выдавала 4тыс, вывод сама по себе 1С платформа медленная, гнаться за производительность за счет железа не имеет ни какого смысла. В облаках 1С покажет себя точно так же как тестовой среде которую мы использовали.

    Reply
  73. capitan

    (88) Можно поподробнее, ну или запятые что ли расставить ? )

    Reply
  74. alex_sh2008

    (89)Что конкретно по подробнее? Если честно тестировали не ради 1С а ради платформы визуализации, wmware или Windows 2016, выбрали wmvare, скорость дисковой подистемы по лучше, подключать внешние устройства можно, ну и функционал так больше.

    Reply
  75. Gilev.Vyacheslav

    (88) а вы различаете нагрузочный тест, объемный тест и стресс-тест?

    вы считаете что 1С хорошо работает когда процессоры загружены под 100%?

    а измерять работу в пакетах зачем? как вы понимаете что пакеты одинаковые?

    Reply
  76. alex_sh2008

    (91)Меня не интересовали расчеты производительности 1С и специальных тестов не производил. Тест делался на реальной базе с запуском удаления объектов в 20 фоновых. Основное падение скорости было именно на сервере 1С, слишком долго выполнял скрипты на языке 1С, по сравнению да же с выполнением 1 запроса sql сервером. Я привел вам реальное тестирование, правда оно делалось для других целей.

    Reply
  77. teller

    (15) (11) по своему прав.

    а

    Поэтому я считаю, что данный тест, скорее не замена, а некое дополнение, позволяющее произвести декомпозицию производительности

    надо вынести было в начало реплики и и выделить

    а это вообще убрать:

    1. У этого теста плюс в том, что можно запустить без лицензии 1С (ломалки не берем в расчет)

    т.к. если оборудование не арендованное то наличие не 1с лицензий никто не отменял

    Reply
  78. capitan

    (92) Вы прогнали тесты через 1С, а потом просто то же самое простым SQL запросом из профайлера взятым?

    Reply
  79. alex_sh2008

    (94)Можно и так сказать, но в укороченном виде, после удаленных 20млн записей, мне не хотелось так же возиться и удалять скл запросами 20млн, я взял кусок из профайдера. и выполнил его. По большей части все эти тесты производительности которые завязанные на sql сервере не дают можно сказать ни каких результатов, узкое звено это сам сервер 1С. Если к примеру произвести два параллельных тестирования одного кода на 1С и Java или c#, то это будет куда реальнее результат.

    Reply
  80. teller

    (65)

    приходите к нам на курсы подучитесь

    — ага он пойдет 🙂

    статья на 90% readmefirst скриншоты , остальное самореклама

    Reply
  81. capitan

    (95)Не очень понял насчет

    одного кода на 1С и Java или c#

    Но так то у нас трехзвенная архитектура. 1С сервер обеспечивает 1С клиенту уровень абстракции от сервера БД.

    Понятно что он в этой цепочке самое медленное звено, он же должен то что с клиента пришло преобразовать в SQL запрос.

    Другое дело, что это всегда константа упирающаяся в связку память/процессор.

    Иными словами — вы померяли TPC-C SQL сервера на одной машине — она получилась 200000, а на второй 400000

    И с сервером 1С первая будет в 2 раза медленнее, а не в 4 или в N

    Reply
  82. capitan

    (96)Вы то я вижу прямо с курсов .

    Не вижу только ваших статей.

    Занимаетесь самоутверждением в комментариях ?

    Reply
  83. capitan

    (65)Тех курсов у которых АПДЕКС по русски написано ?

    У 1С 5 дневный курс от двух лучших экспертов (входящих в пятерку) по проектам ЦКТП по стоит 16500

    У вас 3 дневный в два раза дороже, ну конечно вы же круче конечно. Да.

    Не узнал только вас в гриме, вы там на каком месте будете ?

    Reply
  84. Gilev.Vyacheslav

    (99)

    Тех курсов у которых АПДЕКС по русски написано ?

    Я правильно понял, что качество материала, который вы в глаза не видели, оцениваете по слову АПДЕКС?

    от двух лучших экспертов (входящих в пятерку) по проектам ЦКТП

    это Вас колбасит

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

    ну и наконец, наш преподаватель — Бурмистров Андрей — работал в подразделение ЦКТП в 1С, то что вы его не знаете или он не входит в некие рейтинги не говорит о его профессиональных навыках, пока не придете на курсы лично, вам несколько рано делать выводы

    3х дневный курс дороже чем что? у фирмы 1С просто нет аналогичного курса, вы с чем сравниваете?

    вот вам подтверждение от сторонних людей

    Reply
  85. Gilev.Vyacheslav

    (92) реальное тестирование это хорошо, но слишком не конкретно и не точно

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

    все три варианты будут реальные, только нагрузку на разные компоненты давать разные

    можно нагрузить проц сервера 1С, а можно нагрузить проц субд, а можно сеть положить большим объемом передаваемых данных от субд к 1С…

    в зависимости от того как выполняется код отчета — СКД это тянутся избыточные данные с субд на сервер 1С или плоско в макет без всяких скд это только запрос на субд — вы получите разную нагрузку

    тут гораздо важнее чтобы ваш тест был репрезентативным для вашей задачи, а она у вас не четко сформулирована

    (92)

    правда оно делалось для других целей

    может вы начнете с самого начала?

    Reply
  86. alex_sh2008

    (97)Это понять производительность каждой из виртуальных машин. Я считаю что падение в 2 и более раза идет за счет производительности виртуальной машины 1С, если такие же показатели дадут и другие виртуальные машины, то можно уже какие то оценки делать. 3хзвенная архитектура тут не причем клиента я не учитывал так как работает только сервер 1С.

    Reply
  87. alex_sh2008

    (101)Я не беру конфигурации там по напишут черт знает чего и вполне производительная система может опуститься ниже плинтуса. Брали просто базу с данными и использовался свой код для удаления, притом не использовались элементы в конфигурации для удаления, все удаление шло по отдельной записи. Удаление записи из базы самая тяжелая операция для сервера.

    (101)

    может вы начнете с самого начала?

    Суть была проверить производительность транспорта и дисковой подсистемы при размещении на вмваре и сервера 1С и сервера скл. В общем в начале запустили скл прогнали его производительность в нативном режиме. Получили примерные данные, для сравнения брали сервер hp 128 ядер, 1гб памяти, производительность на вмваре по тестам, авторы указывали порядка 100тыс транзакций в секунду. В общем это было для нас эталоном. Дисковая подсистема и транспортный канал в общем не оказывали серьезной задержки. Потом уже подключили 1С и начали с ней тестировать, вот тут и выразилась погрешность, падение в 2 и даже более раза. Даже если учесть что в 1С выполнялся немного другой код, чем когда тестировали sql сервере в нативном режиме, такое падение это очень серьезное падение производительности, если к примеру будут данные по производительности других виртуальных машин, то можно уже будет оценку делать, пока я считаю что сервер 1С выполняет скрипты очень медленно.

    Reply
  88. Gilev.Vyacheslav

    (103) возможно я тупой, но я так и не понял что вы тестировали

    сервер 1С и сервер субд выполняют разные задачи/роли

    сервер 1С является клиентом субд, он не запросы как субд выполняет, а работает с результатами запросов

    соответственно операции выполняющиеся на сервере 1С самостоятельны и не копируют запросы/транзакции субд

    допустим вы правы и ваша типовая реальная не тестовая деятельность пользователей это 20 потоков удаления документов

    если я вас правильно понял, вы выполняли DELETE FROM <таблица> на субд, а потом дергали удаление средствами 1С

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

    тогда операции мимо сервера 1С в реальной деятельности нарушают целостность данных и хоть они и быстрее но не полноценны

    т.е. штраф сервера 1С обоснован функциями, которые нужны, но на сервере субд не происходят

    понятно ли о чем я?

    Reply
  89. Gilev.Vyacheslav

    (102) виртуализация при динамическом распределении и квотировании ресурсов между виртуалками, или просто не удачными настройками может замедлять в разу работу 1С по сравнению с физическим сервером, видели такое на практике не раз

    Reply
  90. alex_sh2008

    (104) Тестировалось все, и виртуальные машины, и дисковая подистема, и транспортный канал, ну для кучи 1С и скл сервер.

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

    т.е. штраф сервера 1С обоснован функциями, которые нужны, но на сервере субд не происходят

    понятно ли о чем я?

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

    Reply
  91. capitan

    (106) Да как раз все нормально вы получили в тестах.

    Сервер 1С — это второе звено в трехзвенной архитектуре, он бОльшую задержку и должен вносить.

    Он обрабатывает и бизнес-логику и транслирует в SQL

    1С же не опирается на логику в БД

    Reply
  92. alex_sh2008

    (108)причем тут 2 звено, сервер в тесте выступал как 1 звено, не было никаких других звеньев, весь код выполнялся на нем, сервер не выполнял сложных вычислений, а просто обрабатывал выборки и и удалял их базы, и падение в 2 и более раза в производительности, это очень плохой показатель. К примеру как то просчитал примерные цифры, скл сервер вернул данные из 2000 строк за 0.12 сек где то, а сервер 1С прошел эту выборку где то за 1.2 может и больше сек, это нормально разве.

    Reply
  93. alex_sh2008

    (108)Вот к примеру сделал набросок на 2х платформах, на моем ноутбуке показал заполнение дерева в 1000000 узлов и возврат обратно с удалением: с# 00:00:01.0373604 и 1С 5 секунд

    С#:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace treePerformance
    {
    public class TreeNode<T>
    {
    private readonly T _value;
    private readonly List<TreeNode<T>> _children = new List<TreeNode<T>>();
    
    public TreeNode(T value)
    {
    _value = value;
    }
    
    public TreeNode<T> this[int i]
    {
    get { return _children[i]; }
    }
    
    public TreeNode<T> Parent { get; private set; }
    
    public T Value { get { return _value; } }
    
    public TreeNode<T> AddChild(T value)
    {
    var node = new TreeNode<T>(value) { Parent = this };
    _children.Add(node);
    return node;
    }
    
    public TreeNode<T>[] AddChildren(params T[] values)
    {
    return values.Select(AddChild).ToArray();
    }
    
    public bool RemoveChild(TreeNode<T> node)
    {
    return _children.Remove(node);
    }
    
    public void Traverse(Action<T> action)
    {
    action(Value);
    foreach (var child in _children)
    child.Traverse(action);
    }
    
    public IEnumerable<T> Flatten()
    {
    return new[] { Value }.Concat(_children.SelectMany(x => x.Flatten()));
    }
    }
    
    class Program
    {
    
    static void Main(string[] args)
    {
    
    int level = 1000000;
    
    TreeNode<string> root = new TreeNode<string>(«root»);
    TreeNode<string> node = root;
    DateTime startDate = DateTime.Now;
    
    for (int i = 0; i < level; i++)
    {
    node = node.AddChild(«child» + i);
    }
    TreeNode<string> prev = node.Parent;
    while (prev != root)
    {
    prev.RemoveChild(node);
    node = prev;
    prev = prev.Parent;
    }
    TimeSpan leadTime = DateTime.Now — startDate;
    Console.WriteLine(«Lead time: » + leadTime);
    }
    }
    }
    
    

    Показать

    1C:

    Level = 1000000;
    Root = New Structure(«Node, Parent»);
    Node = Root;
    startDate = CurrentDate();
    For i = 0 To Level Do
    Node.Node = new Structure(«Node, Parent»,, Node);
    Node = Node.Node;
    i = i + 1;
    EndDo;
    
    While  ValueIsFilled(Node) Do
    Node = Node.Parent;
    EndDo;
    
    leadTime = CurrentDate() — startDate;
    Message(leadTime);
    

    Показать

    Reply
  94. Gilev.Vyacheslav

    (110) я напишу на ассемблере, будет еще быстрее

    вы явно не догоняете

    Reply
  95. capitan

    (110)Так бодро мы начинали, разговором про БД.

    А сейчас все смешалось … люди и кони….

    Вы этим кодом меряете скорость языка, напишете на С++ будет еще быстее, чем на пошарпаном С, на ассемблере еще быстрее.

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

    Возьмете фреймворк любого языка — он будет медленнее нативного кода.

    С С# вообще некорректно сравнивать, там компилятор, а у 1С насколько я помню, компилятор в общих модулях, дальше интерпретатор, равняйте с VBA

    Reply
  96. alex_sh2008

    (114)А чего обсуждать БД, есть куча программ нагрузочного тестирования серверов баз данных, которые дадут полную картину работы сервера, дальше уже зависит от клиентов.

    С каких пор С# стал нативным это такой же фреймворк, если не нравиться могу на Java дать данные или это то же скажете нативный компилятор.

    Reply
  97. capitan

    (115) Ну так это статья как раз про программу нагрузочного тестирования серверов баз данных )

    Насчет С# я погорячился, пардоньте.

    Но сути это не меняет, так вы в среду CLR загоняете программу уже в байт коде, а в 1С код у вас же не в общем модуле был т.е. сервер его еще и компилирует для начала?

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *