Wpis z mikrobloga

Mam napisana aplikacje. Niestety dzisiaj wyrzuciła mi błąd:

Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached

Dałem zapytanie na SQL Server:

SELECT
DB_NAME(dbid) as DBName,
COUNT(dbid) as NumberOfConnections,
loginame as LoginName
FROM
sys.sysprocesses
WHERE
dbid > 0
GROUP BY
dbid, loginame
;

Zapytanie zwróciło:
DBName = BAZASQL1
NumberOfConnections = 100
LoginName = programlogin

Błąd wyrzuca gdy liczba połączeń = 100.
Tak jakby tworzył połączenie i go nie zamykał.

Jak można zwiększyć liczbę połączeń dla bazy?

#sql #sqlserver #windowsserver #administrator #aspnetmvc
  • 9
  • Odpowiedz
@pawel86: chyba podchodzisz od złej strony do problemu:

Tak jakby tworzył połączenie i go nie zamykał. Jak można zwiększyć liczbę połączeń dla bazy?


Pytanie powinno brzmieć: czemu aplikacja tworzy tyle połączeń i ich nie zamyka? Póki nie odpowiesz na to pytanie, to na pewno bez problemu każda pula połączeń jaką ustawisz zostanie wsycona.
  • Odpowiedz
@pawel86: ale już wiesz na co zostało wykorzystane te 100 (czy 32767) połączeń? Faktycznie, aż tyle ta aplikacja potrzebuje na raz? Bo 100 otwartych na raz połączeń to bardzo dużo.
  • Odpowiedz
@pawel86:

Wiesz jak to ominąć?


Szczerze to nie - nigdy mi nie była potrzebna taka pula i zawsze przy takich problemach zapala się czerwone światełko. Szybkie googlowanie mówi, że jest to problem konfiguracji połączenia do serwera, a nie konfiguracji serwera (patrz link, który przesłał @fegwegw i to. Jeśli tak faktycznie jest to wystarczy zmienić connection string i dodać odpowiednią wartość (o tu masz coś na ten temat).
  • Odpowiedz
  • 1
@pawel86 możesz opowiedzieć po co aplikacji jest na raz 100 połączeń? Trochę nie wyobrażam sobie przypadku, gdzie jedna aplikacja używa na raz wielu połączeń, więc chciałbym poszerzyć swoją wiedzę kiedy coś takiego może być wykorzystywane.
  • Odpowiedz