工作中發(fā)生的一次小插曲讓我意識到關鍵業(yè)務切不可押寶依賴的服務或系統(tǒng)的默認行為茎杂,否則一旦升級后的系統(tǒng)或服務默認行為有所變化珍德,將可能中斷服務摔竿。
一切要從一條阿里云監(jiān)控報警短信說起真慢,一臺上線不久的SLB后端服務器健康檢查失敗,被停止對外提供服務榕吼。
我們立即使用瀏覽器模擬健康檢查請求饿序,服務端并未按設想完全失去響應(SNR),反倒是返回了令人費解 404 錯誤羹蚣。
不過原探,幸好我們有 1臺冗余后端服務器,此時對外服務并未完全中斷顽素。
參考服務器郵件列表中的討論咽弦,我們發(fā)現(xiàn)當前版本的服務器默認使用系統(tǒng)變量 java.io.tmpdir
中指定的目錄作為工作目錄。對于Linux胁出,如果沒有明確指定型型,默認/tmp
,真是個嚴重紕漏划鸽。
顯然输莺,我們過于依賴服務器的默認行為,對使用的服務器原理認識不足是這次誤報的首要原因裸诽,吃一塹長一智嫂用。
附表(常見Linux 發(fā)行版 /tmp
清理策略):
發(fā)行版 | 何時刪除 | 如何配置 |
---|---|---|
Ubuntu 14.04 | 系統(tǒng)開機引導 | 在 /etc/default/rcS 中指定TMPTIME 參數(shù) |
Ubuntu 16.10 | 系統(tǒng)開機引導 | 在 /etc/tmpfiles.d/tmp.conf 中指定 |
RedHat-like RHEL6 | 每日定時 | /etc/cron.daily/tmpwatch |
RedHat-like RHEL7 | 每日定時 | /usr/lib/tmpfiles.d/tmp.conf |
Gentoo | / | /etc/conf.d/bootmisc |