共用方式為


傳輸配額

傳輸配額是用來判斷連線何時過度使用資源的原則機制。配額是硬性限制,一旦超出配額值,就會無法使用其他資源。傳輸配額能夠防範惡意或無意間發生的阻絕服務攻擊。

Windows Communication Foundation (WCF) 的預設傳輸配額值是依據保守的資源配置。這些預設值適用於開發環境和小規模的安裝情況。如果安裝時資源不足,或者不論是否有額外的資源,連線都會受到限制時,服務系統管理員就應該檢查傳輸配額,並且調整個別的配額值。

傳輸配額的類型

WCF 傳輸有三種配額:

  • 逾時」(Timeout) 會降低藉由長時間佔用資源所產生的阻絕服務攻擊情形。

  • 記憶體配置限制」(Memory Allocation Limit) 會防止單一連線用盡系統記憶體和拒絕服務其他連線。

  • 集合大小限制」(Collection Size Limit) 會限制間接配置記憶體或有限供應之資源的使用。

傳輸配額描述

本章節說明標準 WCF 傳輸 HTTP(S)、TCP/IP 和具名管道適用的傳輸配額。自訂傳輸會公開未包含在下列清單的可設定配額。如需自訂傳輸配額的詳細資訊,請參閱自訂傳輸的相關文件。

每個配額設定都各有型別、最小值和預設值。配額的最大值受到其型別限制。由於機器限制,不一定都能將配額設定為最大值。

名稱 型別 最小 值 預設 值 描述

ChannelInitializationTimeout

TimeSpan

1 次滴答聲

5 秒

初始讀取期間,等待連線傳送前序編碼 (Preamble) 的最長時間。在發生驗證之前會接收到這項資料。這個設定通常比 ReceiveTimeout 配額值小很多。

CloseTimeout

TimeSpan

0

1 分鐘

在傳輸引發例外狀況之前,等待連線關閉的最長時間。

ConnectionBufferSize

整數

1

8 KB

基礎傳輸的傳輸和接收緩衝區大小 (以位元組為單位)。增加緩衝區大小,可以在傳送大型訊息時提高輸送量。

IdleTimeout

TimeSpan

0

2 分鐘

共用連線關閉之前,可以保持在閒置狀態的最長時間。

這個設定只適用於共用連線。

LeaseTimeout

TimeSpan

0

5 分鐘

作用中共用連線的最長存留期。當超過指定的時間後,一旦已服務目前要求,就會關閉連線。

這個設定只適用於共用連線。

ListenBacklog

整數

1

10

在拒絕端點的其他連線之前,接聽項尚未服務之連線的最大數目。

MaxBufferPoolSize

長整數

0

512 KB

傳輸專用於共用可重複使用之訊息緩衝區的最大記憶體 (以位元組為單位)。當集區無法提供訊息緩衝區時,就會配置新緩衝區,暫時使用。

建立許多通道處理站或接聽項的安裝,可以為緩衝集區配置大量記憶體。減少這個緩衝區大小,在這個情況下會大幅降低記憶體使用量。

MaxBufferSize

整數

1

64 KB

用於串流資料的最大緩衝區大小 (以位元組為單位)。如果未設定這個傳輸配額,或者傳輸不是使用資料流,配額值就是 MaxReceivedMessageSize 配額值和 MaxValue 兩者的較小值。

MaxOutboundConnectionsPerEndpoint

整數

1

10

可與特定端點相關聯之傳出連線的最大數目。

這個設定只適用於共用連線。

MaxOutputDelay

TimeSpan

0

200 毫秒

等待傳送作業在單一作業中批次處理其他訊息的最長時間。如果基礎傳輸的緩衝區已滿,就會提早傳送訊息。傳送額外訊息並不會重設延遲期間。

MaxPendingAccepts

整數

1

1

接聽項上等待通道接受的最大數目。

在完成接受和啟動新接受之間有段時間間隔。增加這個集合大小,可以防止這個間隔期間內進行連線的用戶端遭到捨棄。

MaxPendingConnections

整數

1

10

接聽項上等待應用程式接受連線的最大數目。當超過這個配額值時,新的傳入連線會被捨棄,而不是等待被接受。

如訊息安全性等連線功能,可能會導致用戶端開啟一個以上的連線。在設定這個配額值時,服務系統管理員應該考量到其他連線。

MaxReceivedMessageSize

長整數

1

64 KB

在傳輸引發例外狀況之前,已接收的訊息 (包括標頭) 大小上限 (以位元組為單位)。

OpenTimeout

TimeSpan

0

1 分鐘

在傳輸引發例外狀況之前,等待建立連線的最長時間。

ReceiveTimeout

TimeSpan

0

10 分鐘

在傳輸引發例外狀況之前,等待讀取作業完成的最長時間。

SendTimeout

Timespan

0

1 分鐘

在傳輸引發例外狀況之前,等待寫入作業完成的最長時間。

透過繫結或組態進行設定時,傳輸配額 MaxPendingConnectionsMaxOutboundConnectionsPerEndpoint 會結合為一個名為 MaxConnections 的傳輸配額。只有繫結項目才能允許個別設定這些配額值。MaxConnections 傳輸配額具有相同的最小值和預設值。

設定傳輸配額

傳輸配額可以透過傳輸繫結項目、傳輸繫結、應用程式組態或主機原則來設定。本文件未涵蓋透過主應用程式原則來設定傳輸的內容。如需探索主機原則配額設定的詳細資訊,請參閱基礎傳輸的相關文件。設定 HTTP 和 HTTPS 主題說明 Http.sys 驅動程式的配額設定。如需在 HTTP、TCP/IP 和具名管道連線上設定 Windows 限制的詳細資訊,請搜尋 Microsoft 知識庫。

其他類型的配額會間接套用至傳輸。傳輸用來將訊息轉換為位元組的訊息編碼器,可以有自己的配額設定。不過,這些配額與所要使用的傳輸類型無關。

從繫結項目控制傳輸配額

透過繫結項目來設定傳輸配額,可提供控制傳輸行為的最大彈性。在建置通道時,會從繫結取得 Close、Open、Receive 和 Send 作業的預設逾時。

名稱 HTTP TCP/IP 具名管道

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

從繫結控制傳輸配額

透過繫結來設定傳輸配額,會提供一組可從中選擇的簡化配額,同時仍會提供存取最常用的配額值。

名稱 HTTP TCP/IP 具名管道

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

  1. MaxBufferSize 傳輸配額只適用於 BasicHttp 繫結。WSHttp 繫結適用於不支援資料流傳輸模式的情況中。

  2. 傳輸配額 MaxPendingConnectionsMaxOutboundConnectionsPerEndpoint 會結合為一個名為 MaxConnections 的傳輸配額。

從組態控制傳輸配額

應用程式組態可以像直接存取繫結上的屬性一樣,設定相同的傳輸配額。在組態檔中,傳輸配額的名稱一律以小寫字母為開頭。例如,繫結上的 CloseTimeout 屬性會對應至組態中的 closeTimeout 設定,而繫結上的 MaxConnections 屬性則會對應至組態中的 maxConnections 設定。

另請參閱

參考

HttpsTransportBindingElement
HttpTransportBindingElement
TcpTransportBindingElement
NamedPipeTransportBindingElement
ConnectionOrientedTransportBindingElement
TransportBindingElement