Přenosové kvóty

Kvóty přenosu představují mechanismus zásad pro rozhodování, kdy připojení spotřebovává nadměrné prostředky. Kvóta je pevný limit, který brání použití dalších prostředků po překročení hodnoty kvóty. Kvóty přenosu zabraňují útokům na útok do služby se zlými úmysly nebo neúmyslnými útoky na dostupnost služby.

Přenosy wcf (Windows Communication Foundation) mají výchozí hodnoty kvót založené na konzervativním přidělování prostředků. Tyto výchozí hodnoty jsou vhodné pro vývojová prostředí a malé scénáře instalace. Správci služeb by měli zkontrolovat kvóty přenosu a ladit hodnoty jednotlivých kvót, pokud instalace prostředků dochází nebo pokud jsou připojení omezená i přes dostupnost dalších prostředků.

Typy kvót přenosu

Přenosy WCF mají tři typy kvót:

  • Vypršení časového limitu snižuje útoky na dostupnost služby, které se po delší dobu spoléhají na vázání prostředků.

  • Limity přidělení paměti brání jednomu připojení v vyčerpání systémové paměti a odepření služby jiným připojením.

  • Omezení velikosti kolekce vázala na spotřebu prostředků, které nepřímo přidělují paměť nebo jsou v omezeném množství.

Popisy kvót přenosu

Tato část popisuje přenosové kvóty dostupné pro standardní přenosy WCF: HTTP(S), TCP/IP a pojmenované kanály. Vlastní přenosy můžou vystavit vlastní konfigurovatelné kvóty, které nejsou zahrnuté v tomto seznamu. Informace o kvótách najdete v dokumentaci k vlastnímu přenosu.

Každé nastavení kvóty má typ, minimální hodnotu a výchozí hodnotu. Maximální hodnota kvóty je omezena jeho typem. Kvůli omezením počítače není vždy možné nastavit kvótu na maximální hodnotu.

Name Type Min.

hodnota
Výchozí

hodnota
Popis
ChannelInitializationTimeout TimeSpan 1 zaškrtnutí 5 s Maximální doba čekání na odeslání prezentu během počátečního čtení. Tato data se přijímají před ověřením. Toto nastavení je obecně mnohem menší než ReceiveTimeout hodnota kvóty.
CloseTimeout TimeSpan 0 1 min Maximální doba čekání na zavření připojení, než přenos vyvolá výjimku.
ConnectionBufferSize Celé číslo 0 8 kB Velikost v bajtech přenosu a příjmu vyrovnávací paměti podkladového přenosu. Zvýšení velikosti vyrovnávací paměti může zvýšit propustnost při odesílání velkých zpráv.
IdleTimeout TimeSpan 0 2 min Maximální doba, po kterou může připojení ve fondu zůstat nečinné, než se zavře.

Toto nastavení platí jenom pro připojení ve fondu.
LeaseTimeout TimeSpan 0 5 min. Maximální životnost aktivního připojení ve fondu Po uplynutí zadaného času se připojení po dokončení aktuální žádosti zavře.

Toto nastavení platí jenom pro připojení ve fondu.
ListenBacklog Celé číslo 1 10 Maximální počet připojení, která může naslouchací proces před odepřením dalších připojení k danému koncovému bodu zrušit.
MaxBufferPoolSize Dlouhé celé číslo 0 512 kB Maximální paměť v bajtech, kterou přenos věnuje sdružování opakovaně použitelných vyrovnávacích pamětí zpráv. Pokud fond nemůže poskytnout vyrovnávací paměť zpráv, je pro dočasné použití přidělena nová vyrovnávací paměť.

Instalace, které vytvářejí mnoho kanálů továren nebo naslouchacích procesů, mohou přidělit velké množství paměti pro fondy vyrovnávací paměti. Zmenšení této velikosti vyrovnávací paměti může výrazně snížit využití paměti v tomto scénáři.
MaxBufferSize Celé číslo 0 64 kB Maximální velikost vyrovnávací paměti používané pro streamovaná data v bajtech. Pokud tato kvóta přenosu není nastavena nebo přenos nepoužívá streamování, je hodnota kvóty stejná jako menší hodnota MaxReceivedMessageSize kvóty a MaxValue.
MaxOutboundConnectionsPerEndpoint Celé číslo 1 10 Maximální počet odchozích připojení, která je možné přidružit k určitému koncovému bodu.

Toto nastavení platí jenom pro připojení ve fondu.
MaxOutputDelay TimeSpan 0 200 ms Maximální doba čekání po operaci odeslání pro dávkování dalších zpráv v jedné operaci. Zprávy se odešlou dříve, pokud se vyrovnávací paměť základního přenosu zaplní. Odesílání dalších zpráv neobnovuje dobu zpoždění.
MaxPendingAccepts Celé číslo 1 1 Maximální počet přijímání pro kanály, které může naslouchací proces čekat.

Mezi dokončením přijetí a zahájením nového přijetí je interval času. Zvýšením této velikosti kolekce můžete zabránit klientům, kteří se během tohoto intervalu připojují.
MaxPendingConnections Celé číslo 1 10 Maximální počet připojení, která může naslouchací proces čekat na přijetí aplikací. Při překročení této hodnoty kvóty se nová příchozí připojení zahodí a nečekají na přijetí.

Připojení ionové funkce, jako je zabezpečení zpráv, můžou způsobit, že klient otevře více než jedno připojení. Správci služeb by měli při nastavování této hodnoty kvóty počítat s těmito dalšími připojeními.
MaxReceivedMessageSize Dlouhé celé číslo 0 64 kB Maximální velikost přijaté zprávy( včetně záhlaví) před vyvoláním výjimky v bajtech
OpenTimeout TimeSpan 0 1 min Maximální doba čekání na navázání připojení před vyvolání výjimky přenosem.
ReceiveTimeout TimeSpan 0 10 minut Maximální doba čekání na dokončení operace čtení, než přenos vyvolá výjimku.
SendTimeout Časový interval 0 1 min Maximální doba čekání na dokončení operace zápisu před vyvolání výjimky.

Přenosové kvóty MaxPendingConnections a MaxOutboundConnectionsPerEndpoint jsou sloučeny do jedné přenosové kvóty volané MaxConnections při nastavení prostřednictvím vazby nebo konfigurace. Pouze element vazby umožňuje nastavit tyto hodnoty kvóty jednotlivě. Kvóta MaxConnections přenosu má stejné minimální a výchozí hodnoty.

Nastavení kvót přenosu

Kvóty přenosu se nastavují prostřednictvím prvku vazby přenosu, přenosové vazby, konfigurace aplikace nebo zásad hostitele. Tento dokument nepokrývá nastavení přenosu prostřednictvím zásad hostitele. Informace o nastavení kvót zásad hostitele najdete v dokumentaci k podkladovému přenosu. Téma Konfigurace HTTP a HTTPS popisuje nastavení kvóty pro ovladač Http.sys. Další informace o konfiguraci omezení systému Windows na připojení http, TCP/IP a pojmenovaných kanálech najdete ve znalostní bázi Microsoft Knowledge Base.

Jiné typy kvót se na přenosy vztahují nepřímo. Kodér zpráv, který přenos používá k transformaci zprávy na bajty, může mít vlastní nastavení kvóty. Tyto kvóty jsou však nezávislé na typu použité dopravy.

Řízení přenosových kvót z elementu vazby

Nastavení kvót přenosu prostřednictvím elementu vazby nabízí největší flexibilitu při řízení chování přenosu. Výchozí časové limity pro operace Zavřít, Otevřít, Přijmout a Odeslat jsou převzaty z vazby při sestavení kanálu.

Název HTTP TCP/IP Pojmenovaný kanál
ChannelInitializationTimeout X X
CloseTimeout
ConnectionBufferSize X X
IdleTimeout X X
LeaseTimeout X
ListenBacklog X
MaxBufferPoolSize X X X
MaxBufferSize X X X
MaxOutboundConnectionsPerEndpoint X X
MaxOutputDelay X X
MaxPendingAccepts X X
MaxPendingConnections X X
MaxReceivedMessageSize X X X
OpenTimeout
ReceiveTimeout
SendTimeout

Řízení přenosových kvót z vazby

Nastavení přenosových kvót prostřednictvím vazby nabízí zjednodušenou sadu kvót, ze které si můžete vybrat, a zároveň poskytuje přístup k nejběžnějším hodnotám kvót.

Název HTTP TCP/IP Pojmenovaný kanál
ChannelInitializationTimeout
CloseTimeout X X X
ConnectionBufferSize
IdleTimeout
LeaseTimeout
ListenBacklog X
MaxBufferPoolSize X X X
MaxBufferSize 0 X X
MaxOutboundConnectionsPerEndpoint 2 2
MaxOutputDelay
MaxPendingAccepts
MaxPendingConnections 2 2
MaxReceivedMessageSize X X X
OpenTimeout X X X
ReceiveTimeout X X X
SendTimeout X X X
  1. Kvóta MaxBufferSize přenosu je k dispozici pouze u vazby BasicHttp . Vazby WSHttp jsou určené pro scénáře, které nepodporují streamované přenosové režimy.

  2. Přepravní kvóty MaxPendingConnections a MaxOutboundConnectionsPerEndpoint jsou sloučeny do jedné přepravní kvóty, která se nazývá MaxConnections.

Řízení kvót přenosu z konfigurace

Konfigurace aplikace může nastavit stejné kvóty přenosu jako přímý přístup k vlastnostem vazby. V konfiguračních souborech začíná název kvóty přenosu vždy malým písmenem. Například CloseTimeout vlastnost vazby odpovídá closeTimeout nastavení v konfiguraci a MaxConnections vlastnost vazby odpovídá maxConnections nastavení v konfiguraci.

Viz také