Как стать автором
Обновить

Комментарии 9

Что-то очень маленькая производительность получилась «Тариф службы приложений B1 едва ли справляется с нагрузкой в 1 RPS.», как так то?

Осталось непонятным где именно проседает производительность, что это за «алгоритм соответствия имен, который отбирает очень много ресурсов»? Как вообще выглядит само приложение изнутри?
НЛО прилетело и опубликовало эту надпись здесь

@Zaphkiel@Drag13производительность безусловно низкая. Под капотом EntityFramework, которым я пользуюсь в первый раз, ну и в целом программирование для меня это хобби. Поэтому тут проблемы не в  Azure, а в не оптимальном коде. Его я собираюсь пересмотреть и улучшить. А сейчас по крайней мере я смог сравнить тарифы между собой и попробовать разные стратегии тестирования на Azure

НЛО прилетело и опубликовало эту надпись здесь
Несколько странно говорить сначала про то какая у Azure хорошая инфраструктура, и как много продуктов она в себя включает, а потом делать тест производительности сайта без использования всей этой специфики.
Используемый в статье вариант — безусловно гибкий, консольное приложение + SQL можно развернуть где угодно, но в этом же и проблема этого теста.
Если же подходить к вопросу с точки зрения «cloud-first», можно было бы:
1) Вместо AppService, воспользоваться Static Web Apps, которые на порядок дешевле. Как понимаю по описанию, какой-то сложной логики на серверной части *клиентского приложения* — нет.
2) Вместо классического SQL — взять Azure Blob Storage, либо CosmosDB. Consumption-based планы обойдутся дешевле при ограниченной аудитории приложения. Да и при большой, чтение одного блоба с данными с Blob Storage — будет дешевле запросов к SQL.
3) Обновление данных с сайтов магазинов — сделать через Azure Function. Из коробки Durability, триггеры срабатывающие по расписанию, опять же Consumption-based биллинг. Учитывая что джоб выполняется раз в сутки и не CPU-heavy — ценник будет небольшой.

В вашем ответе есть что растащить на Гугл-запросы) спасибо за такой развернутый ответ) БД MS SQL выбрана как наиболее знакомая мне из майкрософтовского стэка, служба приложений маячила перед глазами при изучении Azure

НЛО прилетело и опубликовало эту надпись здесь

Привет! Тестовый агент с SoapUI запускался на локальной станции, на ноутбуке?

Результат в RPS мог получиться скромным из-за запуска теста через интернет. По ряду причин:

  • исчерпание TCP-подключений, проблема TCP Time Wait в Windows также актуальна, как и в Linux

  • лимиты сетевого провайдера, иногда это троттлинг (защита от DoS со стороны абонента) иногда просто ограничение пропускной способности

  • лимиты Azure (защита от DDoS/DoS на стороне площадки)

Скорее всего первая причина

Стоит проверить рекомендации из статьи базы знаний Microsoft:

https://docs.microsoft.com/ru-ru/windows/client-management/troubleshoot-tcpip-port-exhaust

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

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

Инструменты, которые закрывают подключения после каждого теста:

  • Apache.JMeter, но если в конфигурационный файл jmeter.properties внести настройку httpclient.reset_state_on_thread_group_iteration=false, то тоже не будет закрывать

  • Gatling, но если в настройки http-протокола добавить shareConnections , то тоже не будут, пример.

Инструменты, которые не закрывают подключения:

  • k6

  • ab

Как поступает Soap UI не знаю, и не знаю если ли у него настройки для изменения поведения.

Резюмируя: изменение инструмента или его настроек также можно повысить RPS

Добрый день, спасибо за коммент,

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

  1. Я выставлял на том же приложении статическую страницу и получал по ней несколько десятков rps

  2. Загрузка процессора в службе приложения была близкой к максимуму. Можно посмотреть на сравнительной таблице выше в статье

Может ли быть, что производительность по статической странице выполнялось в ограниченном количестве tcp/ip соединений. Думаю да. Но загрузка процессора службы приложений говорит, что дело в загрузке процессора на серверной стороне.

Ну и просто для информации: SoapUI не закрывает tcp/ip соединение пока не закончит весь тест. Но на сколько помню, это можно параметризировать

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории