Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Le quote di trasporto sono un meccanismo di criteri per decidere quando una connessione utilizza risorse eccessive. Una quota è un limite rigido che impedisce l'uso di risorse aggiuntive dopo il superamento del valore della quota. Le quote di trasporto impediscono attacchi denial of service dannosi o non intenzionali.
I trasporti di Windows Communication Foundation (WCF) hanno valori di quota predefiniti basati su un'allocazione conservativa delle risorse. Questi valori predefiniti sono adatti per gli ambienti di sviluppo e gli scenari di installazione di piccole dimensioni. Gli amministratori del servizio devono esaminare le quote di trasporto e ottimizzare i singoli valori di quota se un'installazione esaurisce le risorse o se le connessioni sono limitate nonostante la disponibilità di risorse aggiuntive.
Tipi di quote di trasporto
I trasporti WCF hanno tre tipi di quote:
I timeout attenuano gli attacchi Denial of Service che si basano sul legamento delle risorse per un lungo periodo di tempo.
I limiti di allocazione della memoria impediscono a una singola connessione di esaurire la memoria di sistema e negare il servizio ad altre connessioni.
I limiti delle dimensioni della raccolta limitano il consumo di risorse che allocano indirettamente la memoria o che si trovano in un'offerta limitata.
Descrizioni delle quote di trasporto
Questa sezione descrive le quote di trasporto disponibili per i trasporti WCF standard: HTTP(S), TCP/IP e named pipe. I trasporti personalizzati possono esporre le proprie quote configurabili non incluse in questo elenco. Per informazioni sulle quote, consultare la documentazione relativa a un trasporto personalizzato.
Ogni impostazione di quota ha un tipo, un valore minimo e un valore predefinito. Il valore massimo di una quota è limitato dal relativo tipo. A causa delle limitazioni del computer, non è sempre possibile impostare una quota sul valore massimo.
Nome | TIPO | Quantità min. valore |
Predefinito valore |
Descrizione |
---|---|---|---|---|
ChannelInitializationTimeout |
Intervallo di tempo | 1 segno di graduazione | 5 Secondi | Tempo massimo di attesa di una connessione per inviare il preambolo durante la lettura iniziale. Questi dati vengono ricevuti prima dell'autenticazione. Questa impostazione è in genere molto più piccola del valore della ReceiveTimeout quota. |
CloseTimeout |
Intervallo di tempo | 0 | 1 min | Tempo massimo di attesa della chiusura di una connessione prima che il trasporto generi un'eccezione. |
ConnectionBufferSize |
Numero intero | 1 | 8 KB | Dimensioni, in byte, dei buffer di trasmissione e ricezione del trasporto sottostante. L'aumento delle dimensioni del buffer può migliorare la velocità effettiva durante l'invio di messaggi di grandi dimensioni. |
IdleTimeout |
Intervallo di tempo | 0 | 2 minuti | Il tempo massimo in cui una connessione in pool può rimanere inattiva prima di essere chiusa. Questa impostazione si applica solo alle connessioni in pool. |
LeaseTimeout |
Intervallo di tempo | 0 | 5 minuti | Durata massima di una connessione in pool attiva. Al termine dell'intervallo di tempo specificato, la connessione viene chiusa una volta terminata la richiesta corrente. Questa impostazione si applica solo alle connessioni in pool. |
ListenBacklog |
Numero intero | 1 | 10 | Numero massimo di connessioni che il listener può avere non gestite prima che vengano negate connessioni aggiuntive a tale endpoint. |
MaxBufferPoolSize |
Lungo | 0 | 512 KB | Memoria massima, in byte, che il trasporto dedica al pooling di buffer di messaggi riutilizzabili. Quando il pool non può fornire un buffer di messaggi, viene allocato un nuovo buffer per uso temporaneo. Le installazioni che creano molte channel factory o listener possono allocare grandi quantità di memoria per i pool di buffer. La riduzione di questa dimensione del buffer può ridurre notevolmente l'utilizzo della memoria in questo scenario. |
MaxBufferSize |
Numero intero | 1 | 64 kB | Dimensione massima, in byte, di un buffer usato per lo streaming dei dati. Se questa quota di trasporto non è impostata o il trasporto non usa lo streaming, il valore della quota corrisponde al valore inferiore del valore della MaxReceivedMessageSize quota e MaxValue. |
MaxOutboundConnectionsPerEndpoint |
Numero intero | 1 | 10 | Numero massimo di connessioni in uscita che possono essere associate a un endpoint specifico. Questa impostazione si applica solo alle connessioni in pool. |
MaxOutputDelay |
Intervallo di tempo | 0 | 200 ms | Tempo massimo di attesa dopo un'operazione di invio per l'invio in batch di messaggi aggiuntivi in una singola operazione. I messaggi vengono inviati in precedenza se il buffer del trasporto sottostante diventa pieno. L'invio di messaggi aggiuntivi non reimposta il periodo di ritardo. |
MaxPendingAccepts |
Numero intero | 1 | 1 | Numero massimo di accettazioni per i canali che l'ascoltatore può avere in attesa. Tra il completamento dell'accettazione e l'avvio di una nuova accettazione è previsto un intervallo di tempo. L'aumento di questa dimensione della raccolta può impedire che i client che si connettono durante questo intervallo vengano eliminati. |
MaxPendingConnections |
Numero intero | 1 | 10 | Numero massimo di connessioni che il listener può avere in attesa di essere accettato dall'applicazione. Quando questo valore di quota viene superato, le nuove connessioni in ingresso vengono eliminate anziché attendere l'accettazione. Le funzionalità di connessione, ad esempio la sicurezza dei messaggi, possono causare l'apertura di più connessioni da parte di un client. Gli amministratori del servizio devono tenere conto di queste connessioni aggiuntive quando si imposta questo valore di quota. |
MaxReceivedMessageSize |
Lungo | 1 | 64 kB | Dimensione massima, in byte, di un messaggio ricevuto, incluse le intestazioni, prima che il trasporto generi un'eccezione. |
OpenTimeout |
Intervallo di tempo | 0 | 1 min | Tempo massimo di attesa per stabilire una connessione prima che il trasporto generi un'eccezione. |
ReceiveTimeout |
Intervallo di tempo | 0 | 10 minuti | Tempo massimo di attesa del completamento di un'operazione di lettura prima che il trasporto generi un'eccezione. |
SendTimeout |
TimeSpan | 0 | 1 min | Tempo massimo di attesa del completamento di un'operazione di scrittura prima che il trasporto generi un'eccezione. |
Le quote MaxPendingConnections
di trasporto e MaxOutboundConnectionsPerEndpoint
vengono combinate in una singola quota di trasporto chiamata MaxConnections
quando impostata tramite l'associazione o la configurazione. Solo l'elemento di associazione consente di impostare singolarmente questi valori di quota. La MaxConnections
quota di trasporto ha gli stessi valori minimi e predefiniti.
Impostazione delle quote di trasporto
Le quote di trasporto vengono impostate tramite l'elemento di associazione del trasporto, l'associazione di trasporto, la configurazione dell'applicazione o i criteri host. Questo documento non tratta l'impostazione dei trasporti tramite criteri host. Consultare la documentazione relativa al sistema di trasporto utilizzato per individuare le impostazioni delle quote della politica host. L'argomento Configurazione di HTTP e HTTPS descrive le impostazioni di quota per il driver Http.sys. Cercare nella Microsoft Knowledge Base ulteriori informazioni sulla configurazione dei limiti di Windows per le connessioni HTTP, TCP/IP e named pipe.
Altri tipi di quote si applicano indirettamente ai trasporti. Il codificatore di messaggi utilizzato dal trasporto per trasformare un messaggio in byte può avere le proprie impostazioni di quota. Tuttavia, queste quote sono indipendenti dal tipo di trasporto utilizzato.
Controllo delle quote di trasporto dall'elemento binding
L'impostazione delle quote di trasporto tramite l'elemento di associazione offre la massima flessibilità nel controllo del comportamento del trasporto. I timeout predefiniti per le operazioni di chiusura (Close), apertura (Open), ricezione (Receive) e invio (Send) vengono ricavati dall'associazione quando si compila un canale.
Nome | Protocollo HTTP | TCP/IP | pipe nominata |
---|---|---|---|
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 |
Controllo delle quote di trasporto dal vincolo
L'impostazione delle quote di trasporto tramite il binding offre un set semplificato di quote tra cui scegliere, fornendo l'accesso ai valori di quota più comuni.
Nome | Protocollo HTTP | TCP/IP | pipe nominata |
---|---|---|---|
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 |
La
MaxBufferSize
quota di trasporto è disponibile solo sul vincoloBasicHttp
. LeWSHttp
associazioni sono per scenari che non supportano le modalità di trasporto continuo.Le quote di trasporto
MaxPendingConnections
eMaxOutboundConnectionsPerEndpoint
vengono combinate in una singola quota di trasporto denominataMaxConnections
.
Controllo delle quote di trasporto dalla configurazione
La configurazione dell'applicazione può impostare le stesse quote di trasporto come l'accesso diretto alle proprietà di un binding. Nei file di configurazione il nome di una quota di trasporto inizia sempre con una lettera minuscola. Ad esempio, la CloseTimeout
proprietà di un'associazione corrisponde all'impostazione closeTimeout
nella configurazione e la MaxConnections
proprietà di un'associazione corrisponde all'impostazione maxConnections
nella configurazione.