要調整這些參數,你需要修改 Apache 的主設定檔。在 Ubuntu 系統上,主要的設定通常位於 /etc/apache2/apache2.conf,或是獨立的 mpm 模組設定檔中。
修改 Apache 主設定檔
請使用 sudo 權限開啟設定檔:
Bash
sudo nano /etc/apache2/apache2.conf
在檔案中搜尋並修改以下三個參數(如果沒看到,可以直接加在檔案末尾):
- Timeout: 這是伺服器在接收或發送資料時,等待連線逾時的時間。面對惡意掃描,縮短這個時間非常有幫助。建議設為 15 或 30。
- KeepAlive: 確保它是 On。這允許同一個連線發送多個請求,減少重複建立連線的負擔。
- KeepAliveTimeout: 這是伺服器在處理完一個請求後,等待下一個請求的時間。原本預設可能是 5 或 15,建議改為 2 或 3,讓佔著連線不動作的機器人快速斷開。
設定範例:
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 連線佔用情況嗎?