
前言:這是不是“如何設定 StartServers”問題。
我有一台運作良好多年的 Web 伺服器,上週我們開始使用 CloudFlare 來幫助減少探測和 DDOS 活動。從那時起,我一直收到 Apache 錯誤日誌,其中充滿了經典的「伺服器似乎很忙」調整 StartServers 等訊息。我認為這是因為 CloudFlare 在後台進行了大量連接 - 可能是為了快取或其他什麼。因此,我慢慢開始增加 StartServers、MinSpareServers 等的數量,但無論我將這些值設為多少,伺服器仍然報告該錯誤。我已確保該伺服器確實正在運行 mpm_prefork,並且每次更改值時我都會重新啟動伺服器。這些是我在 apache.cfg 檔案中的相關值:
KeepAlive On
MaxKeepAliveRequests 1000
KeepAliveTimeout 5
<IfModule mpm_prefork_module>
StartServers 100
MinSpareServers 100
MaxSpareServers 150
MaxClients 1000
MaxRequestsPerChild 4000
</IfModule>
記錄錯誤時,伺服器上的負載和流量顯得很輕。我使用 netstat 看到峰值時可能有 70 個並發連接,伺服器僅使用 8GB RAM 中的 1.5GB,CPU 正在閒置,磁碟和網路 IO 很低。我看到可能有 10 到 20 個伺服器實例在運行(峰值)
ps aux|grep apache2
無論如何,伺服器回應和頁面載入時間似乎都不錯。
我的問題是,為什麼我會收到“伺服器似乎很忙”錯誤,而我的值都不小於 100,但我通常只看到 70 個連接? Apache 似乎忽略了 apache2.conf 檔案中的值。