Apache-2.2
過載站點的理想日誌輪換配置
我負責的伺服器壓力已經超過其臨界點已有一段時間了。我推薦了目前正在由團隊的其他成員實施的更改,這些更改應該可以緩解站點的核心基礎架構問題。但是,有一個嚴重的問題需要採取權宜之計來為我們爭取一些時間。
由於日誌輪換 CRON 執行,Apache 每天早上 7:30 重新啟動。6:00 - 9:00 是我們正常站點使用的高峰時間,當與 CRON 結合使用時,伺服器會耗盡記憶體。
什麼日誌輪換配置會有所幫助?我應該把它從每天移到每小時嗎?更改門檻值?只需更改時間(我這樣做了,但仍然遇到中斷)。
EEAA 關於使用遠端日誌伺服器的建議完全解決了這個問題,但在您的環境中可能無法實現。
如本網站所述,使用 LogRotate重新載入Apache 而不是重新啟動它。您可能希望將參數更改為每天。如果您每小時、每天或每週輪換一次,停機時間應該不會有任何區別。
/var/log/apache2/*.log { weekly missingok rotate 52 compress delaycompress notifempty create 640 root adm sharedscripts postrotate /etc/init.d/apache2 reload > /dev/null endscript prerotate if [ -d /etc/logrotate.d/httpd-prerotate ]; then \ run-parts /etc/logrotate.d/httpd-prerotate; \ fi; \ endscript }
重新載入應該讓 Apache 在重新載入配置之前完成所有打開的請求的服務。您可能會失去一些請求,但我認為您不會失去很多請求。你可能不會失去任何東西。
如果您需要更高的可靠性,您應該考慮使用兩台負載平衡伺服器進行某種健康檢查或實時故障轉移,或者使用遠端日誌伺服器。