Стресс-тестирование ядра структуры сущности идет медленно - PullRequest
0 голосов
/ 23 сентября 2018
  • Я создаю приложение .net core 2.1 с ядром EF.
  • Я использую транзакцию с уровнем изоляции без чтения.
  • Я создаю асинхронный API и создаю простой efзапрос асинхронный (получить 5 полей первого пользователя, без ссылки на другую таблицу).[запрос пользователя] [1]
  • Когда я создаю один запрос, запрос занимает небольшое время
  • Когда я подвергаю стресс-тесту 10 потоков, увеличение: 5, цикл навсегда (с использованием jmeter), время запроса такое же
  • Однако, когда я подвергаю стресс-тесту API, используя jmeter (100 потоков, увеличение: 20 с, цикл навсегда), некоторые запросы занимают небольшое время, некоторые требуютбольшое время (может быть 5 с, 10 с, 25 с ...), другое исключение тайм-аута соединения с запросом

  • что мне делать?

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

  • Создание соединений с базой данных - дорогостоящий процесс, который требует времени.Вы можете указать, что вы хотите минимальный пул соединений, которые должны создаваться и оставаться открытыми на протяжении всего жизненного цикла приложения.Затем они повторно используются для каждого вызова базы данных.
  • Следует использовать уровень изоляции транзакции "Read Uncommitted"
  • Следует использовать одно и то же соединение с базой данных для нескольких операций с одним запросом
  • Все API, методы должны быть Async, убедитесь, что не смешиваете Async с Sync.

    Спасибо всем !!!

1 Ответ

0 голосов
/ 23 сентября 2018

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

Как только вы подтвердите, что проблемы реальны, проверьте несколько вещей:

  • Нет N + 1 Выберите проблему (циклы запросов)
  • Степень детализации полученных данных, вы извлекаете слишком много данных
  • Производительность SQL-запросов, выданных при просмотре БД?
  • Размер пула

См. Некоторыеинтересные блоги:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...