Мы запускаем несколько веб-приложений Azure (.NET Core, MVC4, MVC5) для SQL Azure. Каждые 10 секунд происходит значительная задержка ответа от сервера SQL. Мы проверили это с помощью консольного приложения, повторяющего один и тот же запрос 100 раз, и независимо от того, когда мы запускаем консольное приложение, задержка происходит ровно каждые 10 секунд.
Запрос обычно занимает 150 мсек. Каждые 10 секунд это займет 2-3 секунды.
Поведение одинаково на тестовых и производственных серверах БД. Мы используем несколько триггеров (5), ни один из которых не запускается запросом, используемым в нагрузочном тесте.
Нагрузочный тест - это хранимая процедура с простым запросом выбора. Пока мы выполняем эти тесты, других пользователей, использующих нашу тестовую среду, нет.
Мы также провели нагрузочное тестирование, используя инструмент тестирования производительности на портале Azure, с такими же результатами.
Есть идеи о том, с чего начать поиск первопричины этой задержки?
Наш тестовый код:
private static void Main(string[] args)
{
var ss = new Stopwatch();
// Let's go
using (SqlConnection connection = new SqlConnection(connectionString))
{
for (var i = 0; i < 100; i++)
{
ss.Restart();
connection.Open();
var sql = "EXEC usp_loadTestSp";
using (SqlCommand command = new SqlCommand(sql, connection))
{
using (SqlDataReader reader = command.ExecuteReader())
{
Console.WriteLine($"Current time {i}: {DateTime.UtcNow}");
}
}
connection.Close();
Console.WriteLine($"Loop time {i}: {ss.ElapsedMilliseconds}");
}
}
EndApp();
}
Обновление:
Просто создал новый сервер SQL с новой пустой базой данных SQL в Azure. Нет таблиц, нет ничего. Обновлена строка подключения в тестовом приложении, изменен запрос на SELECT NULL
. Тот же результат, это занимает намного больше времени каждые 10 секунд ...