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