2009-11-24 94 views

回答

11

我假設你的實例模式是每個會話。如果需要,您可以將此值設置爲Int32.Max。如何過,這是好事,詳細瞭解了WCF節流概念..

值是非常低,以防止DOS攻擊,WCF團隊希望服務是「默認安全」。

這裏是一個很好讀,看看this blog post here

請注意,這些值都非常低 ...比許多人要低得多 想的那樣。的 的WCF隊這邊的想法是,他們希望 WCF是「默認安全」和 降低DOS攻擊是 從對你的服務推出了變化。 這個想法聽起來不錯,但在 實踐中它會導致重大問題。

在 事實上,你幾乎可以肯定,如果你使用的是 像WsHttpBinding的是 支持會話綁定跑 到這些問題。這是爲什麼?在10屆的 默認數量,這 首次出現時意味着10個用戶 可以在同一時間 訪問服務。但是,WCF會話不是 Web會話。與網絡會議,0​​這是由服務器管理和 一般採用HTTP Cookie進行追蹤, WCF會話由 客戶端代理髮起並沒有結束,直到他們 超時或客戶端發送一個 明確要求放棄 會議。這裏的東西,因爲每個 代理實例啓動它自己的 會議,這使得在一次幾個 請求可以使用多個會話一次 可能是用戶。現在 你可能會想你是安全的,如果你 不具備多線程代碼 ,做這種事情......但 這是不完全正確。因爲 用戶必須做出明確要求 服務器取消他的會議,這是 可能你會離開會議 開放意外。誰一直 與ASMX服務工作的人,往往 沒有意識到,他們需要關閉 他們的代理對象,以及少數 一定要明白,對象必須是 關閉經常做的 錯誤對待他們像一次性物品, ,導致會話保持打開狀態 。記住,默認 會話限制爲10一致,這意味着 如果你打造十個電話中的時間相對 短期內大量使用的WSHttpBinding服務 ,你可以最終 服務鎖定直到 會話過期。

WCF團隊 在此做出的決定可能令人困惑。 爲了限制攻擊者針對您的服務發起DOS攻擊 的能力,他們讓 更容易對您的服務執行DOS攻擊 。你不再 需要的資源涌入服務器 與要求,以便它可以不再 迴應,你只需要做出 少數通話過程中不會明確 請求關閉連接並 最大程度的發揮會話計數。除非將此值設置爲 這個值非常高,否則運行 服務器拒絕 接受任何傳入連接的風險爲 ,儘管事實上它使CPU的使用率爲零,從而冷卻了 。

1

只要您的服務器具有處理請求的資源,您可以將其設置得更高。它默認爲10,因爲這很容易擊敗對您的服務的任何拒絕服務攻擊。如果您擁有專用於此單一服務的強大服務器,則可以將其設置爲10,000。沒有一個幻數可以用於此 - 您需要平衡一方的需求和另一方的服務器資源,併發會話的最大數量有助於防止融化!

+0

10個連接建立後拒絕使用您的服務是一種有效的方法來抵禦拒絕服務攻擊...... Otoh對環境有利,因爲服務器CPU將保持相當平靜。 – 2014-11-09 23:25:12