Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> 關於伺服器

Apache 503 Service Temporarily Unavailable 錯誤排查:mod_bw 限流配置陷阱

編輯:關於伺服器

錯誤現象

Apache 偶發 503 Service Temporarily Unavailable,實際併發極低(僅十幾請求/秒)即觸發,嚴重影響服務可用性。

根因分析

檢查配置發現載入 mod_bw (Bandwidth Limiting Module) 並設定:

ForceBandWidthModule On
BandWidthModule On
BandWidth all 1024000
MaxConnection all 150

官方文件明確說明:

Any connection over Max, will get a 503 Service Temporarily Unavailable

即:當前連線數超過 MaxConnection 設定值,新連線直接回傳 503。雖設定 150,但模組計數邏輯或釋放機制可能有Bug,導致實際門檻極低。

解決方案

方案一:停用連線數限制(推薦)

MaxConnection all 0  # 0 代表不限制

保留頻寬限制 BandWidth all 1024000 (1MB/s) 防止單一連線佔滿頻寬。

方案二:調大門檻並監控

MaxConnection all 500  # 視伺服器能力調整

同時啟用 mod_status 觀察實際併發:

<Location /server-status>
    SetHandler server-status
    Require ip 127.0.0.1 10.0.0.0/8
</Location>

方案三:改用更穩健的限流模組

  • mod_ratelimit (Apache 2.4+ 內建):SetOutputFilter RATE_LIMIT; SetEnv rate-limit 400 (400KB/s)
  • mod_qos (Quality of Service):功能豐富,支援請求速率、併發、頻寬多維限制。
  • Nginx limit_req/limit_conn:若架構允許,前端掛 Nginx 做限流更高效。

驗證修復

# 壓力測試
ab -n 1000 -c 50 https://your-site.com/

# 觀察錯誤率應為 0%,無 503 回應

總結

mod_bw 的 MaxConnection 參數預設行為極易誤觸發 503。生產環境建議設為 0 (不限制連線數),改用頻寬限制或上層 Nginx/應用層限流,避免因模組 Bug 導致服務不可用。

Copyright © Windows教程網 All Rights Reserved