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 |
Kvóta
MaxBufferSize
přenosu je k dispozici pouze u vazbyBasicHttp
. VazbyWSHttp
jsou určené pro scénáře, které nepodporují streamované přenosové režimy.Přepravní kvóty
MaxPendingConnections
aMaxOutboundConnectionsPerEndpoint
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.