在 Apache 設定中縮短連線等待時間,可以讓那些佔著連線不放的機器人趕快斷線,釋放 Workers

要調整這些參數,你需要修改 Apache 的主設定檔。在 Ubuntu 系統上,主要的設定通常位於 /etc/apache2/apache2.conf,或是獨立的 mpm 模組設定檔中。

修改 Apache 主設定檔

請使用 sudo 權限開啟設定檔:

Bash

sudo nano /etc/apache2/apache2.conf

在檔案中搜尋並修改以下三個參數(如果沒看到,可以直接加在檔案末尾):

  1. Timeout: 這是伺服器在接收或發送資料時,等待連線逾時的時間。面對惡意掃描,縮短這個時間非常有幫助。建議設為 1530
  2. KeepAlive: 確保它是 On。這允許同一個連線發送多個請求,減少重複建立連線的負擔。
  3. KeepAliveTimeout: 這是伺服器在處理完一個請求後,等待下一個請求的時間。原本預設可能是 5 或 15,建議改為 23,讓佔著連線不動作的機器人快速斷開。

設定範例:

Apache

Timeout 30
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 3

調整連線限制 (MPM Prefork)

因為你的日誌提到了 MaxRequestWorkers 錯誤,這部分通常在專門的設定檔中。請開啟:

Bash

sudo nano /etc/apache2/mods-enabled/mpm_prefork.conf

你可以參考以下設定進行優化,讓伺服器能同時處理更多請求:

Apache

<IfModule mpm_prefork_module>
    StartServers             5
    MinSpareServers          5
    MaxSpareServers         10
    MaxRequestWorkers      250
    MaxConnectionsPerChild   3000
</IfModule>

請根據你的記憶體大小調整 MaxRequestWorkers。如果記憶體只有 1GB 或 2GB,設為 150 到 200 比較保險;如果記憶體充足,可以調到 250 以上。

生效設定

修改完成後,必須先檢查語法是否正確,再重啟 Apache:

Bash

# 檢查語法
sudo apache2ctl configtest

# 如果顯示 Syntax OK,再重啟
sudo systemctl restart apache2

設定完成後,原本那些 AH00161 錯誤(到達連線上限)應該會減少。你想了解如何監控目前的 Apache 連線佔用情況嗎?

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *