Transportquota
Transportquota zijn een beleidsmechanisme voor het bepalen wanneer een verbinding overmatige resources verbruikt. Een quotum is een vaste limiet die het gebruik van extra resources voorkomt zodra de quotumwaarde is overschreden. Transportquota voorkomen schadelijke of onbedoelde Denial of Service-aanvallen.
WcF-transporten (Windows Communication Foundation) hebben standaardquotumwaarden die zijn gebaseerd op een conservatieve toewijzing van resources. Deze standaardwaarden zijn geschikt voor ontwikkelomgevingen en kleine installatiescenario's. Servicebeheerders moeten transportquota controleren en afzonderlijke quotumwaarden afstemmen als een installatie onvoldoende resources heeft of als verbindingen worden beperkt ondanks de beschikbaarheid van extra resources.
Soorten transportquota
WCF-transporten hebben drie soorten quota:
Time-outs beperken denial of service-aanvallen die afhankelijk zijn van het koppelen van resources gedurende een langere periode.
Geheugentoewijzingslimieten voorkomen dat één verbinding systeemgeheugen uitputt en service weigert naar andere verbindingen.
Limieten voor verzamelingsgrootten zijn gebonden aan het verbruik van resources die indirect geheugen toewijzen of die beperkt beschikbaar zijn.
Transportquotabeschrijvingen
In deze sectie worden de transportquota beschreven die beschikbaar zijn voor de standaard WCF-transporten: HTTP(S), TCP/IP en named pipes. Aangepaste transporten kunnen hun eigen configureerbare quota beschikbaar maken die niet zijn opgenomen in deze lijst. Raadpleeg de documentatie voor een aangepast transport voor meer informatie over de quota.
Elke quotuminstelling heeft een type, minimumwaarde en standaardwaarde. De maximumwaarde van een quotum wordt beperkt door het type. Vanwege computerbeperkingen is het niet altijd mogelijk om een quotum in te stellen op de maximumwaarde.
Name | Type | Min. waarde |
Standaardinstelling waarde |
Beschrijving |
---|---|---|---|---|
ChannelInitializationTimeout |
TimeSpan | 1 maatstreepje | 5 sec | Maximale tijd om te wachten op een verbinding om de preparate te verzenden tijdens de eerste leesbewerking. Deze gegevens worden ontvangen voordat verificatie plaatsvindt. Deze instelling is over het algemeen veel kleiner dan de ReceiveTimeout quotumwaarde. |
CloseTimeout |
TimeSpan | 0 | 1 min | Maximale tijd om te wachten tot een verbinding wordt gesloten voordat het transport een uitzondering genereert. |
ConnectionBufferSize |
Geheel getal | 1 | 8 kB | Grootte, in bytes, van de verzend- en ontvangstbuffers van het onderliggende transport. Het vergroten van de buffergrootte kan de doorvoer verbeteren bij het verzenden van grote berichten. |
IdleTimeout |
TimeSpan | 0 | 2 min. | Maximale tijd dat een gegroepeerde verbinding niet actief kan blijven voordat deze wordt gesloten. Deze instelling is alleen van toepassing op gegroepeerde verbindingen. |
LeaseTimeout |
TimeSpan | 0 | 5 min. | Maximale levensduur van een actieve gegroepeerde verbinding. Nadat de opgegeven tijd is verstreken, wordt de verbinding gesloten zodra de huidige aanvraag is verwerkt. Deze instelling is alleen van toepassing op gegroepeerde verbindingen. |
ListenBacklog |
Geheel getal | 1 | 10 | Maximum aantal verbindingen dat de listener niet kan gebruiken voordat extra verbindingen met dat eindpunt worden geweigerd. |
MaxBufferPoolSize |
Lang | 0 | 512 kB | Maximaal geheugen, in bytes, dat het transport wijdt aan het groeperen van herbruikbare berichtbuffers. Wanneer de pool geen berichtbuffer kan leveren, wordt er een nieuwe buffer toegewezen voor tijdelijk gebruik. Installaties die veel kanaalfactory's of listeners maken, kunnen grote hoeveelheden geheugen toewijzen voor buffergroepen. Het verminderen van deze buffergrootte kan het geheugengebruik in dit scenario aanzienlijk verminderen. |
MaxBufferSize |
Geheel getal | 1 | 64 kB | Maximale grootte, in bytes, van een buffer die wordt gebruikt voor het streamen van gegevens. Als dit transportquotum niet is ingesteld of het transport geen streaming gebruikt, is de quotumwaarde gelijk aan de kleiner van de MaxReceivedMessageSize quotumwaarde en MaxValue. |
MaxOutboundConnectionsPerEndpoint |
Geheel getal | 1 | 10 | Maximum aantal uitgaande verbindingen dat kan worden gekoppeld aan een bepaald eindpunt. Deze instelling is alleen van toepassing op gegroepeerde verbindingen. |
MaxOutputDelay |
TimeSpan | 0 | 200 ms | Maximale tijd om te wachten na een verzendbewerking voor het batchgewijs verwerken van extra berichten in één bewerking. Berichten worden eerder verzonden als de buffer van het onderliggende transport vol raakt. Het verzenden van extra berichten stelt de vertragingsperiode niet opnieuw in. |
MaxPendingAccepts |
Geheel getal | 1 | 1 | Maximum aantal geaccepteerde kanalen waarvoor de listener kan wachten. Er is een tijdsinterval tussen het voltooien van accepteren en een nieuw accepteren starten. Door deze verzamelingsgrootte te vergroten, kunnen clients die verbinding maken tijdens dit interval niet meer worden verwijderd. |
MaxPendingConnections |
Geheel getal | 1 | 10 | Het maximum aantal verbindingen dat de listener kan hebben, kan wachten om te worden geaccepteerd door de toepassing. Wanneer deze quotumwaarde wordt overschreden, worden nieuwe binnenkomende verbindingen verwijderd in plaats van te wachten om te worden geaccepteerd. Verbinding maken ionfuncties zoals berichtbeveiliging kunnen ertoe leiden dat een client meer dan één verbinding opent. Servicebeheerders moeten rekening houden met deze extra verbindingen bij het instellen van deze quotumwaarde. |
MaxReceivedMessageSize |
Lang | 1 | 64 kB | Maximale grootte, in bytes, van een ontvangen bericht, inclusief kopteksten, voordat het transport een uitzondering genereert. |
OpenTimeout |
TimeSpan | 0 | 1 min | Maximale tijd om te wachten tot een verbinding tot stand is gebracht voordat het transport een uitzondering genereert. |
ReceiveTimeout |
TimeSpan | 0 | 10 min. | Maximale tijd om te wachten tot een leesbewerking is voltooid voordat het transport een uitzondering genereert. |
SendTimeout |
Periode | 0 | 1 min | Maximale tijd om te wachten totdat een schrijfbewerking is voltooid voordat het transport een uitzondering genereert. |
De transportquota en MaxOutboundConnectionsPerEndpoint
worden gecombineerd tot één transportquotum MaxPendingConnections
dat wordt aangeroepen MaxConnections
wanneer deze wordt ingesteld via de binding of configuratie. Alleen het bindingselement staat het instellen van deze quotumwaarden afzonderlijk toe. Het MaxConnections
transportquotum heeft dezelfde minimum- en standaardwaarden.
Transportquota instellen
Transportquota worden ingesteld via het transportbindingselement, de transportbinding, toepassingsconfiguratie of hostbeleid. Dit document heeft geen betrekking op het instellen van transporten via hostbeleid. Raadpleeg de documentatie voor het onderliggende transport om de instellingen voor quota voor hostbeleid te detecteren. In het onderwerp HTTP en HTTPS configureren worden quotuminstellingen voor het Http.sys-stuurprogramma beschreven. Zoek in de Microsoft Knowledge Base naar meer informatie over het configureren van Windows-limieten voor HTTP- en TCP/IP-verbindingen en benoemde pijpverbindingen.
Andere soorten quota zijn indirect van toepassing op transporten. De berichtcoderingsprogramma die door het transport wordt gebruikt om een bericht om te zetten in bytes, kan eigen quota-instellingen hebben. Deze quota zijn echter onafhankelijk van het type vervoer dat wordt gebruikt.
Transportquota beheren vanuit het bindingselement
Het instellen van transportquota via het bindingselement biedt de grootste flexibiliteit bij het beheren van het gedrag van het transport. De standaardtime-outs voor de bewerkingen Sluiten, Openen, Ontvangen en Verzenden worden uit de binding gehaald wanneer een kanaal wordt gebouwd.
Naam | HTTP | TCP/IP | Benoemde pijp |
---|---|---|---|
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 |
Transportquota van de binding beheren
Het instellen van transportquota via de binding biedt een vereenvoudigde set quota waaruit u kunt kiezen, terwijl u nog steeds toegang krijgt tot de meest voorkomende quotumwaarden.
Naam | HTTP | TCP/IP | Benoemde pijp |
---|---|---|---|
ChannelInitializationTimeout |
|||
CloseTimeout |
X | X | X |
ConnectionBufferSize |
|||
IdleTimeout |
|||
LeaseTimeout |
|||
ListenBacklog |
X | ||
MaxBufferPoolSize |
X | X | X |
MaxBufferSize |
1 | 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 |
Het
MaxBufferSize
transportquotum is alleen beschikbaar voor deBasicHttp
binding. DeWSHttp
bindingen zijn bedoeld voor scenario's die geen ondersteuning bieden voor gestreamde transportmodi.De vervoersquota
MaxPendingConnections
enMaxOutboundConnectionsPerEndpoint
worden gecombineerd tot één transportquotum genaamdMaxConnections
.
Transportquota van configuratie beheren
Toepassingsconfiguratie kan dezelfde transportquota instellen als het rechtstreeks openen van eigenschappen voor een binding. In configuratiebestanden begint de naam van een transportquotum altijd met een kleine letter. De eigenschap voor een binding komt bijvoorbeeld CloseTimeout
overeen met de closeTimeout
instelling in de configuratie en de MaxConnections
eigenschap op een binding komt overeen met de maxConnections
instelling in de configuratie.