Published on

December 26, 2018

Симуляция нагрузки на SQL Server с помощью ChaosLoad

При работе с SQL Server может быть сложно проверить производительность и масштабируемость ваших запросов и скриптов без реальной нагрузки на сервер. Это особенно актуально при написании блогов, презентаций или тестировании новых идей. К счастью, есть инструмент под названием ChaosLoad, который может помочь вам симулировать нагрузку на ваш SQL Server.

ChaosLoad позволяет вам определить шаблон JSON, который указывает нагрузку, которую вы хотите запустить. Например:

{
  "ConnectionString": "Server=localhost\\sql2019;Database=WideWorldImporters;Trusted_Connection=True;",
  "Templates": [
    {
      "ScriptPath": "Scripts\\Demo1\\HammerTime.sql",
      "Sleep": 100,
      "Threads": 50,
      "RunCount": 1000
    },
    {
      "ScriptPath": "Scripts\\Demo1\\FindUser.sql",
      "Sleep": 0,
      "Threads": 5,
      "RunCount": 5
    }
  ]
}

В приведенном выше примере шаблон включает два скрипта. “HammerTime.sql” выполняется 100 раз на 50 потоках с паузой в 50 мс после каждого выполнения, в то время как “FindUser.sql” выполняется 5 раз на 5 потоках без паузы между выполнениями.

Для использования ChaosLoad вы можете либо клонировать исходный код из репозитория ChaosLoad на GitHub и запустить его с помощью .NET Core SDK 2.1+ или загрузить исполняемые файлы для Windows с GitHub и запустить их без установки чего-либо.

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

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

{
  "ConnectionString": "Server=localhost\\sql2017;Database=StackOverflow2013;Trusted_Connection=True;",
  "Templates": [
    {
      "ScriptPath": "Scripts\\Demo1\\GetAllUsersEndWithG.sql",
      "Sleep": 0,
      "Threads": 5,
      "RunCount": 10
    },
    {
      "ScriptPath": "Scripts\\Demo1\\GetCountPosts.sql",
      "Sleep": 0,
      "Threads": 5,
      "RunCount": 10
    },
    {
      "ScriptPath": "Scripts\\Demo1\\GetMostPopularBadge.sql",
      "Sleep": 10,
      "Threads": 5,
      "RunCount": 10
    }
  ]
}

С помощью ChaosLoad вы легко можете создавать и выполнять сложные сценарии нагрузки для проверки производительности и масштабируемости вашего SQL Server. Это ценный инструмент для разработчиков, администраторов баз данных и всех, кто работает с SQL Server.

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

Счастливого тестирования нагрузки!

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.