2025年5月6日 星期二

[研究]如何限制 IIS 或 IIS 底下網站的同時連線數 ? 總連線數 ?

[研究]如何限制 IIS 或 IIS 底下網站的同時連線數 ? 總連線數 ?

2025-04-21

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 19

********************************************************************************

在 IIS(Internet Information Services)中,**直接限制「同時連線數」或「總連線數」**的方法不像 Apache 那樣明確,但還是可以透過幾種不同的方式來「間接達成限制目的」,以下針對 IIS 整體與單一網站分別說明:

一、限制 IIS 整體的同時連線數(或總連線數)

方法 1:透過「Windows 註冊表」修改 MaxConnections

1.開啟「登錄編輯器」 (regedit)

2.位置:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

3.新增或編輯 DWORD 值:

MaxUserPort:設定最大的用戶端連接埠數(預設值、最大值 65534;最小值 5000)

TcpNumConnections:設定允許的最大 TCP 連線數(如 100)(預設值不存在,會使用最大值;最大值十進位:16777214,十六進位:0xFFFEFFFF )

4.重新啟動系統。

注意:這會影響整個 Windows 系統的 TCP 連線,不只是 IIS!

********************************************************************************

二、限制 IIS 特定網站的同時連線數

方法 1:使用「IIS 管理員」設定「連線限制」

1.開啟 IIS 管理員

2.選取你要限制的 網站名稱

3.點選 「Advanced Settings(進階設定)」 或右側的 「限制(Limits)」(Windows 版本不同會略有不同)

4/在「Connection Limits」中設定:Limit number of connections(限制最大連線數)、Connection timeout(連線逾時秒數)






方法 2:透過 applicationHost.config 或 web.config

在 applicationHost.config 中可以手動加入限制(全站):

<system.applicationHost>
  <sites>
    <site name="YourSiteName" id="1">
      <limits connectionTimeout="00:01:00" maxConnections="100" />   
    </site>
  </sites>
</system.applicationHost>

********************************************************************************

📊 備註:監控目前連線數

若要查看目前連線數,可透過下列方式:

netstat -an | findstr :80 | find /c "ESTABLISHED"

netstat -an | findstr :443| find /c "ESTABLISHED"


Performance Monitor(效能監視器)

加入 Web Service > Current Connections 計數器。







🧩 額外補充

若你是 IIS Express,則不支援連線限制。

若要依 IP 限制 或 時間段限制,需搭配 IP 安全性規則 或寫入中介軟體(如 URL Rewrite + Dynamic IP Restrictions)。

是否需要針對「單一 IP」或「API 呼叫數」做限制?這樣可能要搭配其他防護措施(如 Application Gateway、反向代理、防火牆等)。

(完)

相關

沒有留言:

張貼留言