Szállítási kvóták
A szállítási kvóták olyan szabályzati mechanizmusok, amelyek eldöntik, hogy egy kapcsolat mikor használ túl sok erőforrást. A kvóta egy kemény korlát, amely megakadályozza a további erőforrások használatát a kvótaérték túllépése után. A szállítási kvóták megakadályozzák a rosszindulatú vagy nem szándékos szolgáltatásmegtagadási támadásokat.
A Windows Communication Foundation (WCF) átvitelei alapértelmezett kvótaértékekkel rendelkeznek, amelyek az erőforrások konzervatív elosztásán alapulnak. Ezek az alapértelmezett értékek fejlesztési környezetekhez és kisebb telepítési forgatókönyvekhez használhatók. A szolgáltatásgazdáknak át kell tekintenie az átviteli kvótákat, és hangolniuk kell az egyes kvótaértékeket, ha egy telepítés elfogy az erőforrásokból, vagy ha a kapcsolatok a további erőforrások rendelkezésre állása ellenére korlátozottak.
Szállítási kvóták típusai
A WCF-szállítások háromféle kvótával rendelkeznek:
Az időtúllépések mérsékelik a szolgáltatásmegtagadással kapcsolatos támadásokat, amelyek az erőforrások hosszabb ideig való elkössönyösítésére támaszkodnak.
A memóriafoglalási korlátok megakadályozzák , hogy egyetlen kapcsolat kimerítse a rendszer memóriáját, és megtagadja a szolgáltatást más kapcsolatokhoz.
A gyűjtemény méretkorlátjai korlátozták a közvetetten memóriát lefoglaló vagy korlátozott készletben lévő erőforrások felhasználását.
Átviteli kvóta leírása
Ez a szakasz a szabványos WCF-átvitelekhez elérhető szállítási kvótákat ismerteti: HTTP(S), TCP/IP és nevesített csövek. Az egyéni átvitelek közzétehetik a saját konfigurálható kvótáikat, amelyek nem szerepelnek a listában. A kvótákról az egyéni szállítás dokumentációjában tájékozódhat.
Minden kvótabeállítás típussal, minimális értékkel és alapértelmezett értékkel rendelkezik. A kvóta maximális értékét a típusa korlátozza. A gépi korlátozások miatt nem mindig lehet a kvótát a maximális értékre állítani.
Név | Típus | Minimális Érték |
Alapértelmezett Érték |
Leírás |
---|---|---|---|---|
ChannelInitializationTimeout |
időtartam | 1 pipa | 5 másodperc | Maximális idő, amíg egy kapcsolat elküldi a preambulumot a kezdeti olvasás során. Ezek az adatok a hitelesítés előtt érkeznek. Ez a beállítás általában sokkal kisebb, mint a ReceiveTimeout kvótaérték. |
CloseTimeout |
időtartam | 0 | 1 perc | A kapcsolat bezárásának maximális ideje, mielőtt az átvitel kivételt eredményez. |
ConnectionBufferSize |
Egész | 0 | 8 KB | A mögöttes átvitel átviteli és fogadási puffereinek mérete bájtban. A puffer méretének növelése javíthatja az átviteli sebességet nagy üzenetek küldésekor. |
IdleTimeout |
időtartam | 0 | 2 perc | A készletezett kapcsolatok maximális időtartama üresjáratban maradhat a lezárás előtt. Ez a beállítás csak a készletezett kapcsolatokra vonatkozik. |
LeaseTimeout |
időtartam | 0 | 5 perc | Aktív készletezett kapcsolat maximális élettartama. A megadott idő leteltét követően a kapcsolat az aktuális kérés kiszolgálása után bezárul. Ez a beállítás csak a készletezett kapcsolatokra vonatkozik. |
ListenBacklog |
Egész | 0 | 10 | A figyelő által üzemeltetett kapcsolatok maximális száma, mielőtt a végponthoz kapcsolódó további kapcsolatok le lesznek tagadva. |
MaxBufferPoolSize |
Hosszú | 0 | 512 KB | Maximális memória bájtban, amelyet az átvitel az újrafelhasználható üzenetpufferek készletezésére fordít. Ha a készlet nem tud üzenetpuffert biztosítani, a rendszer egy új puffert foglal le ideiglenes használatra. A számos csatornagyárat vagy figyelőt létrehozó telepítések nagy mennyiségű memóriát foglalhatnak le a pufferkészletekhez. A puffer méretének csökkentése jelentősen csökkentheti a memóriahasználatot ebben a forgatókönyvben. |
MaxBufferSize |
Egész | 0 | 64 KB | A streamelési adatokhoz használt puffer maximális mérete bájtban. Ha ez az átviteli kvóta nincs beállítva, vagy az átvitel nem streamelést használ, akkor a kvóta értéke megegyezik a kvóta értékének kisebbével MaxReceivedMessageSize és MaxValuea . |
MaxOutboundConnectionsPerEndpoint |
Egész | 0 | 10 | Az adott végponthoz társítható kimenő kapcsolatok maximális száma. Ez a beállítás csak a készletezett kapcsolatokra vonatkozik. |
MaxOutputDelay |
időtartam | 0 | 200 ms | A küldési művelet után a további üzenetek egyetlen műveletben történő kötegelésének maximális ideje. A rendszer korábban küld üzeneteket, ha az alapul szolgáló átvitel puffere megtelik. A további üzenetek küldése nem állítja vissza a késleltetési időszakot. |
MaxPendingAccepts |
Egész | 0 | 0 | A figyelő által várt csatornák maximális száma. Az elfogadás befejezése és az új elfogadás kezdete között időintervallum van. Ennek a gyűjteményméretnek a növelésével megakadályozhatja, hogy az ebben az intervallumban csatlakozó ügyfelek ne legyenek elvetve. |
MaxPendingConnections |
Egész | 0 | 10 | A figyelő által elfogadandó kapcsolatok maximális száma. Ha túllépi ezt a kvótaértéket, a rendszer az új bejövő kapcsolatokat elveti ahelyett, hogy az elfogadásra vár. Csatlakozás olyan funkciók, mint az üzenetbiztonság, egy ügyfél több kapcsolatot nyithatnak meg. A kvótaérték beállításakor a szolgáltatásgazdáknak figyelembe kell venniük ezeket a további kapcsolatokat. |
MaxReceivedMessageSize |
Hosszú | 0 | 64 KB | A fogadott üzenetek maximális mérete bájtban, beleértve a fejléceket is, mielőtt az átvitel kivételt eredményez. |
OpenTimeout |
időtartam | 0 | 1 perc | A kapcsolat létrehozásának maximális ideje, mielőtt az átvitel kivételt eredményez. |
ReceiveTimeout |
időtartam | 0 | 10 perc | A maximális várakozási idő, amíg az olvasási művelet befejeződik, mielőtt az átvitel kivételt eredményez. |
SendTimeout |
Időtartomány | 0 | 1 perc | Az írási művelet befejezésének maximális ideje, mielőtt az átvitel kivételt eredményez. |
A szállítási kvóták MaxPendingConnections
egyetlen MaxOutboundConnectionsPerEndpoint
szállítási kvótába vannak összevonva, amelyet a kötés vagy a konfiguráció beállításakor hívunk MaxConnections
meg. Csak a kötési elem teszi lehetővé a kvótaértékek egyenkénti beállítását. Az MaxConnections
átviteli kvóta minimális és alapértelmezett értékei megegyeznek.
Szállítási kvóták beállítása
A szállítási kvóták az átviteli kötés elemen, az átviteli kötésen, az alkalmazáskonfiguráción vagy a gazdaszabályzaton keresztül vannak beállítva. Ez a dokumentum nem foglalkozik az átvitelek gazdagépszabályzaton keresztüli beállításával. A gazdagépházirend-kvóták beállításainak megismeréséhez tekintse meg a mögöttes átvitel dokumentációját. A HTTP és a HTTPS konfigurálása témakör az Http.sys illesztőprogram kvótabeállítását ismerteti. A Microsoft tudásbázisában további információt talál a Windows HTTP-, TCP/IP- és elnevezett csőkapcsolatokra vonatkozó korlátainak konfigurálásáról.
Más típusú kvóták közvetetten vonatkoznak a szállításokra. Az üzenetkódoló, amelyet az átvitel az üzenet bájttá alakításához használ, saját kvótabeállításokkal rendelkezhet. Ezek a kvóták azonban függetlenek a használt szállítás típusától.
Átviteli kvóták szabályozása a kötési elemből
A szállítási kvóták kötési elemen keresztüli beállítása a legnagyobb rugalmasságot biztosítja a szállítás viselkedésének szabályozásában. A bezárási, megnyitási, fogadási és küldési műveletek alapértelmezett időtúllépései a kötésből származnak egy csatorna létrehozásakor.
Név | HTTP | TCP/IP | Elnevezett cső |
---|---|---|---|
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 |
Szállítási kvóták szabályozása a kötésből
A szállítási kvóták kötésen keresztüli beállítása egyszerűsített kvótakészletet kínál, amelyből választhat, miközben továbbra is hozzáférést biztosít a leggyakoribb kvótaértékekhez.
Név | HTTP | TCP/IP | Elnevezett cső |
---|---|---|---|
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 |
Az
MaxBufferSize
átviteli kvóta csak aBasicHttp
kötésen érhető el. AWSHttp
kötések olyan forgatókönyvekhez tartoznak, amelyek nem támogatják a streamelt átviteli módokat.A szállítási kvóták
MaxPendingConnections
, ésMaxOutboundConnectionsPerEndpoint
egyetlen szállítási kvótábaMaxConnections
vannak összevonva .
Átviteli kvóták szabályozása konfigurációból
Az alkalmazáskonfiguráció ugyanazokat az átviteli kvótákat állíthatja be, mint egy kötés tulajdonságainak közvetlen elérése. A konfigurációs fájlokban az átviteli kvóta neve mindig kisbetűvel kezdődik. Egy kötés tulajdonsága CloseTimeout
például megfelel a closeTimeout
konfigurációban megadott beállításnak, a kötés tulajdonsága MaxConnections
pedig megfelel a maxConnections
konfigurációban megadott beállításnak.