2009-09-24 12 views
8

Piszę aplikację internetową ASP.NET, która będzie działać w systemie Windows Server 2008 (IIS7).Ile równoczesnych wychodzących wywołań HttpWebRequest można wykonać w ASP.NET/IIS7?

Kod każdej strony będzie musiał wykonać przynajmniej jedno połączenie usługi synchronicznej z serwerem zewnętrznym za pomocą HttpWebRequest i GET.

Moje pytanie - czy istnieje ograniczenie liczby wychodzących połączeń HttpWebRequest, które mogę wykonać? (Załóżmy, że serwer, z którym dzwonię, nie ma limitu)

Czy istnieją sposoby na połączenie tych połączeń, aby poprawić skalowanie aplikacji? Czy pomocna byłaby konfiguracja ogrodu w sieci?

Odpowiedz

5

Domyślnie HTTP/1.1 serwer jest ograniczona do dwóch związku i/serwer HTTP 1.0 jest ograniczona do czterech połączeń. Tak więc twoja aplikacja ASP.NEt będzie miała poważne problemy z przepustowością, jeśli próbujesz wysłać więcej niż dwa zaległe żądania do serwera HTTP/1.1, na przykład.

Konieczne będzie zwiększenie limitu połączenia na serwer lub na całym świecie.

Np globalnie:

ServicePointManager.DefaultConnectionLimit = 10; // allow 10 outstanding connections 

Nadzieja to pomaga.

+0

To było naprawdę pomocne. Pomyślałem, że dodaję to, aby ustawić to za pomocą web.config, możesz dodać adresy do system.net/connectionManagement. – Jacob

1

Myślę, że twoje pytanie powinno być dostosowane do konfiguracji sieci.

Powiedziałbym, że prosisz o kłopoty, jeśli każda strona jest zależna od synchronicznego połączenia zewnętrznego. Co się stanie, jeśli otrzymasz numer N żądania, które zostanie zawieszone w zewnętrznych serwisach internetowych? Będziesz miał wtedy problemy z końcem i nic nie możesz z tym zrobić.

Czy brałeś pod uwagę połączenia asynchroniczne z oddzwanianiem?

EDIT: Asynchronous Pages in ASP.NET 2.0

+0

Will ASYNC połączenia działa, gdy wywołana z kodzie strony aspx za? – frankadelic

+0

To jest załadowane pytanie, ale dodałem link, który ma przykład, który powinien cię skłonić. –

Powiązane problemy