2010-02-25 12 views
6

Otrzymuję następujący wyjątek komunikacyjny dla mojej usługi wcf wprowadzającej kal do innej usługi wcf: "Przekroczono maksymalny rozmiar wiadomości dla wiadomości przychodzących (65536). Aby zwiększyć limit, użyj właściwości MaxReceivedMessageSize w odpowiedniej element wiążący. "Czy maksymalny limit właściwości konfiguracji MaxReceivedMessageSize w wcf wpływa na wydajność usługi?

Postanowiłem to poprzez zwiększenie rozmiaru jak poniżej: maxReceivedMessageSize = „50000000”

Ale tu chcę wiedzieć, czy jakichkolwiek skutków ubocznych zwiększając rozmiar wiadomości do takiego dużego poziomu.

Odpowiedz

5

Tak - może. Powodem, dla którego WCF utrzymuje ten limit na niskim poziomie (64K) jest domyślnie: wyobraź sobie, że serwer jest zajęty odpowiadaniem na żądania, powiedzmy dziesiątki lub setki, i wszystkie one wymagają maksymalnego rozmiaru wiadomości.

Potencjalnie twój serwer może wymagać przydziału kilkudziesięciu lub setek buforów komunikatów jednocześnie - jeśli masz 100 użytkowników i każdy żąda 64 KB, to 6,4 MB - ale jeśli masz 200 użytkowników i każdy żąda 5 MB - to gigabajt pamięci RAM na serwerze - tylko dla buforów komunikatów dla jednej usługi.

Tak, tak - ograniczenie limitu rozmiaru wiadomości ma sens i pomaga zarządzać zużyciem pamięci serwera (a co za tym idzie wydajności). Jeśli otworzysz go zbyt szeroko, atakujący może po prostu wykonać taki atak - zalewając serwer fałszywymi żądaniami, przydzielając tyle pamięci, ile tylko się da, ostatecznie obniżając serwer (takie ataki Denial of Service są dość powszechne) .

+0

Tak więc nie tylko dla odpowiedzi bu, jeśli ustawimy to w pliku konfiguracyjnym po stronie serwera/serwera, oznacza to, że otrzymujemy żądanie. Czy dobrze rozumiem? Czy możemy ograniczyć także odpowiedź po stronie serwera? Mam na myśli to, że oczekuję, że moja usługa wygeneruje maks. 2 MB odpowiedzi. ale zdarza się wyjątek i chcę uniknąć wysyłania większych odpowiedzi. Czy mam odpowiednie ustawienie po stronie serwisu? – batmaci

0

Należy zwiększyć kwotę zgodnie z usługą sieci Web. Efektem ubocznym, który mogę sobie wyobrazić, jeśli użyjesz bardzo dużych wartości, jest to, że użycie pamięci wzrośnie, ale możesz bezpiecznie zwiększyć ją do odpowiedniej wartości bez żadnych niepożądanych efektów.

Powiązane problemy