Mam dwie aplikacje:
- Client wykorzystujący WebSerwis do odpytywania bazy danych. Połączenia odbywają się za pośrednictwem SqlConnect (integratedSecurity). Każde odpytanie to nowe połączenie.
Connection String dla webSerwisu:
Data Source=database;Initial Catalog=data_TEST;Integrated Security=SSPI;MultipleActiveResultSets=true;
- Wokrery, łączące się z bazą za pośrednictwem nHibernate.
Connection String dla workera:
Data Source=database;Initial Catalog=data_TEST;Integrated Security=SSPI;MultipleActiveResultSets=true;
W momencie, w którym worker, który ma większe zadanie na bazie(Prawdopodobnie ponad 1000 zapytań), aplikacja kliencka nie może nawiązać połączenia z bazą danych i webSerwis generuje błąd: connection timeout.
Próbowałem ustawić min pool (np 20), aby klient miał zawsze możliwość połączenia. Zwiększałem też ilość połączeń. Niestety w miarę zadowalające efekty miałem przy liczbie 2000 max connection pool dla workera a i tak nie zawsze wszystko działa poprawnie.
Aplikacje są na innym serwerze niż baza MsSql.
Co można zrobić pod względem optymalizacji aby mieć pewnosć, że web serwis zawsze się połączy?