Обновить
3
0.1

Пользователь

Отправить сообщение

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

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

Можете рассказать о подходе к тестированию?


Для затравки я расскажу, как я это вижу:
Интересен тест близкий к целевому, так что будем не просто нагружать проц а кидать HTTP-запросы
- Нужно 2 сервера на Linux (источник нагрузки и объект тестирования)
- на серверах выполняем настройки, типа увеличения диапазона портов, tw_reuse, всякое такое, чтобы настройки операционки не мешали
Часть настроек можно взять отсюда
https://docs.gatling.io/concepts/operations/

==========
тест 1: запускаем приложение на сервере объекта тестирования

тест 2: Запускаем то же самом приложение на том же самом сервере, но в докер-контейнере.
У контейнера прописаны Request достаточные, чтобы запустить приложение, а Limit не прописаны вовсе (можно прописать для лимит для памяти равный 80% от свободной оперативки на сервере, но для CPU) точно не нужно прописывать лимит, троттлинг может очень сильно зааффектить на приложение в контейнере
==========

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

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

Будете ещё НТ делать - приходите к нам, в @QA_Load - тусовка НТшников в телеге. Если понадобится - поможем с анализом.
У нас тепло, ошибки помогают найти а не ищут в них повода повыпендриваться осуждением

проф.деформация - мы видим только код с ошибками, а значит не видим в нём ничего "необычно-плохого".

Так сказать, "ошибка невыжившего", ахаха :)

Я работаю в НТ и часто встречаю "простые" ошибки даже у крутых разработчиков.
Отсутствие кэширования, запрос в цикле..

Что уж говорить про мои собственные ошибки :)
=============
Простые ошибки хороши тем, что ты их делаешь только один раз, и напоровшись единожды больше их не повторяешь.
Но то, что комментатор в интернете про эту ошибку уже хорошо знает (напоровшись сам или прочитав яркую статью - типа вашей, кстати) - так вот, это не значит, что он сам никогда не совершал ДРУГУЮ простую ошибку.

PS А может и не совершал. Бывают крутые супервнимательные люди. Честь им и хвала!
Жаль, что я не такой.


тут речь не о критике а о стиле критики.
Скажите "если вы сделаете вот так или так - ваш код может получиться ещё лучше" - и человек к вам прислушается.

Скажите "детский сад" и человек пропустит все ценности вашего поста мимо ушей.

в Docker'e базу данных или Node.js приложение или что угодно ещё, вы теряете так же в районе 20-30% производительности на ровном месте

Очень спорное утверждение. Почему вы так считаете?

а на сколько% железо должно быть использовано в пике, по вашему мнению?

20% это имхо как раз хорошо (пока денег на такое железо хватает)

как много "злых" комментов.
Это печально.

Все совершают ошибки, такие статьи помогают их избегать.

Статья интересная, спасибо за неё!

Я HD Tune предпочитал

Ну значит началось со смерти TJ

Прочитал вашу ссылку и понял, что сперва неверно вас понял :)

Вы писали про подключение к одному серверу 1с а я решил что это подключение от имени одного пользователя 1с

спасибо за инфу!

Оо, спасибо вам большое!

После вашего сообщения перечитал тот пост а потом ещё нашёл ещё такой ролик:

https://youtu.be/ByheuXihhuE?si=ATBLxD_4qosTBi6S

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

Класс, я получил свои ответы, спасибо!

Ну, чтож.
Оставим тред тому, кто "и так знает".
Ответы ему не нужны, он и так знает.

А я поищу их где-нибудь ещё :)
Спасибо за беседу.

хреново показывает телевизор

Ваш пример с телевизором не состоятелен, так как зрители не оказывают влияния на работу телевизора

С другой стороны, если у большинство клиентов работают с 1с через web-сервис, то создание нагрузки именно через web-сервер будет корректным способом воспроизведения этой самой нагрузки (не берусь судить, насколько удобным).

JMeter … не отдиагностирует медленное подыхание диска

Ну, тут надо отделять мух от котлет.

JMeter - это инструмент подачи нагрузки.

Он анализирует те клиентские метрики, которые ему доступны: количество возвращаемых ошибок, количество успешно выполненных операций, времена отклика.

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

Это относится не только к 1с, так делается с любой системой

1с - это не сайт-визитка

Вы всё время это повторяете.

Я полагаю, что 1с - это классная система, не зря же она стала такой популярной. И код на русском - это на мой взгляд только помогает.

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

Но я пока так и не увидел, чем она отличается от других ЕРП-систем, например SAP.

Мои коллеги тестировали SAP - с помощью JMeter и с помощью Load Runner.

С Load Runner было удобнее, так как в нём есть специальные рекордеры, облегчающие процесс записи и параметризации скрипта (проблемы, подобные описанным в статье).

Главное, что я хочу сказать - в SAP (как и в множестве других сложных систем) есть все те проблемы, которые вы описали. Они решаются (обычно глубоким анализом статистики и разработкой профиля тестирования совместно с разработчиками предприятия).

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

Что делать, если нельзя - пока ответа нет. Было бы здорово, если бы он появился, это пригодилось бы тем, кому понадобится тестировать 1с в дальнейшем

А я и не берусь за тестирование 1с :)

Мне просто любопытно, как это делать.

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

Это решается. Более того, эту проблему приходится решать при тестировании 1с «родным» по.

Я прочитал ваши ссылки, круто, спасибо за них. Покупать книгу не хотелось, всё же тестировать 1с мне не нужно, это просто любопытство.

Но я нашёл вот такую статью на хабре - выглядит очень интересно:

https://habr.com/ru/articles/696790/

И тут коллеги запускают тесты «по 2 пользователя на сервере» на 6 серверах.

В нескорых ситуациях такой подход годится, в некоторых - нет.

Так вот, я хочу понять - есть ли какой-то аналог инструмента для создания массовой нагрузки на 1с через веб-сервер (сотни параллельно выполняющихся операций)?

Вы говорите, что jmeter не годится категорически - значит есть аналоги.

Ваш аналог - это запуск сотен серверов с тест-центром?

Уточню, я не против такого подхода - но в нагрузочном тестировании он используется только если нет другого выхода (в силу огромной ресурсоёмкости и дороговизны)

И почему нагрузку пренепременно нужно делать сотнями клиентов?

Потому что если нагрузку можно создать одним клиентом, то нагрузочное тестирование для этого не нужно - работник скажет "когда я запускаю отчёт, всё тормозит", а программист 1с повторит это и помощь инженеров по нагрузке ему не нужна.

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

Поэтому тестирование и делится на разные ветки - "ручное/автоматическое" или "нагрузочное".

И тут я возвращаюсь к своему вопросу: если 1с тормозит от того, что в ней работает много пользователей (а не от того, что кто-то запустил одну "тяжёлую" операцию) - как правильно её тестировать?

Предположим, у нас большая организация, тормоза начинаются когда в с 1с взаимодействуют множество менеджеров одновременно (скажем, 200 или 500) - что делать? Запускать 200-500 тест-центров или другой инструмент?

Я люблю нагрузочное тестирование, но с 1с у меня опыта нету а значит нет и ответа на этот вопрос, у вас есть, помогите понять!
Спасибо.

У вас если есть понимание, как создавать большую нагрузку на 1с (пусть даже только через веб) - скажите пожалуйста.

всё делать только через тест-сервер, используя 100500 нагрузочных станций?

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

Спасибо.

Ну, в статье, конечно, очень многих деталей не хватает.

Из неё невозможно понять, что из этого делалось.

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

А какой подход к тестированию предложили бы вы?

Как смоделироаать большую нагрузку?

Спасибо за ответ!

Ну вот и причина, по которой автор использовал JMeter для создания нагрузки.

Я так полагаю, 1000 тест-центров на одном компе запустить проблематично. А чтобы слать запросы в 1000 потоков из JMeter хватит обычной рабочей станции.

Тест-центр, полагаю, учить всё равно надо - для моделирования толстого клиента, и, вероятно ради более точных метрик.

О, это интересно!

А через Vanessa Automation можно создавать нагрузку отправкой трафика, моделируя сотни пользователей с одной нагрузочной странции?

Информация

В рейтинге
3 729-й
Зарегистрирован
Активность