У нас есть трехуровневое приложение с клиентом C#, уровнем веб-сервиса C# WCF и базой данных SQL Server. Веб-служба подключается к базе данных с помощью ADO.NET. Весь наш C# -код использует .NET Framework 2.0.Мониторинг времени подключения к ADO.NET
Недавно клиент выполнил стресс-тест на нашем приложении. Во время теста веб-сервер генерировал много ошибок, таких как:
Не удалось подключиться к базе данных для строки подключения «...». Время ожидания истекло. Период ожидания истекает до завершения операции или сервер не отвечает.
Я знаю, что есть способы поймать ошибки соединения, когда пул соединений заполнен, и попытаться приобрести соединение за пределами пула соединений. Мы также нашли несколько запросов, которые нужно было настроить, но они не учитывают тайм-ауты подключения к веб-серверу.
Мы пытаемся выяснить, почему веб-сервер отключил подключение к базе данных. Я установил веб-сервер для включения всех ADO.NET performance counters. Однако я не вижу ничего, связанного со временем, необходимым для подключения или тайм-аутов подключения или тому подобного. В идеале мы могли бы графически отображать время соединения в perfmon
рядом с другими счетчиками ADO.NET.
Есть ли способ отслеживать производительность ADO.NET при приобретении соединений?
Я предполагаю, что мы могли бы создать собственное счетчик производительности «среднее время соединения», создавая временные попытки открыть соединения, но я бы предпочел использовать то, что уже существует.
Помог ли SQL Profiler в этом отношении? –
@MrMoose: Профилировщик очень помог найти некоторые проблемные запросы. Но мне нужно что-то конкретное, чтобы контролировать время подключения, чтобы увидеть, когда они поднимутся, и когда они начнут отсчет времени. –