[研究]如何限制 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、反向代理、防火牆等)。
(完)
相關








沒有留言:
張貼留言