Unhandled exception: System.InvalidOperationException: Тайм-аут минув. Тайм-аут минув, але з'єднання ще не знято з пулу. Це може бути пов'язано з тим, що всі з'єднання пулів використовуються і досягнуто максимального розміру пулу.
Це може статися тому, що всі з'єднання пулів використовуються і досягається максимальний розмір пулу.
Рішення:
Перше, що потрібно зробити — закрити з'єднання одразу після використання. Якщо з'єднання не закрите, воно зберігається у пулі з'єднань, і відомо, що GC знищено. У цьому випадку ви вважаєте, що пул з'єднань не досяг максимального значення, але насправді пул з'єднань досяг максимального значення; по-друге, можна використати Max Pool Size = N у рядку з'єднання; динамічно розширювати максимальну кількість з'єднань у пулі з'єднань.
Ілюстрації:
Тобто, якщо значення максимального розміру пулу не вказане у рядку connectionString,Тоді максимальний розмір пулу=100Якщо кількість відвідувачів бази даних становить 101, наведена вище помилка з'явиться, якщо після очікування часу, встановленого SqlConnection.ConnectionTimeout (за замовчуванням — 15 секунд), все ще немає доступного з'єднання.
Коли ми налаштовуємося:
Якщо кількість відвідувачів, які одночасно підключаються до бази даних, становить 513, наведена вище помилка виникне, якщо після очікування часу, встановленого SqlConnection.ConnectionTimeout (за замовчуванням — 15 секунд), все ще немає доступного з'єднання.
|