2009年4月22日

Tomcat 5.5 異常腫脹的 catalina.out

最近接了個 case 在家裡 加減 困難做,然後發現了一個以前未曾注意的問題:Tomcat 5.5 有個會卯起來 腫很大,腫不用錢 的 log 檔:catalina.out ,當我注意到它時它已經成長茁壯到 2.4G 了…

網路上查的到的資料都有些奇怪,大概是除了透過 cronolog 以外剩下的各種說法中一直都沒在相關設定中看到這麼一個關鍵檔名 Catalina.out,就此點來看那應該都不是正確答案。

回到剛剛提到的 cronolog 上,它提及必須修改 startup.sh 檔將 Catalina 的輸出轉給 cronolog 去處理,cronolog 就可以在必要時依設定分成每天或每小時一個檔案。

問題就在這邊:為什麼要把 Catalina 的 console 輸出利用管道方式轉給 cronolog 去處理呢?明明同個目錄下還有一個 catalina.yyyy-MM-dd.log 的檔案,它的內容正好就是 catalina.out 扣除使用 System.out 方式輸出後,依日期區分好的輸出結果。同一目錄下有兩份相同的 log 記錄是否表示 catalina.out 其實根本就沒有存在的必要呢?

所以,個人最後決定直接將 Catalina 的 console 輸出直接仍到黑洞去,於是修改 tomcat 啟動命令稿 catalina.sh (其實 Gentoo 是改 /etc/init.d/tomcat.sh 啦) ,將

>> "$CATALINA_BASE"/logs/catalina.out 2>&1 &
全部改為
>> /dev/null 2>&1 &

※ 其他:

  1. 有些 Linux 套件所提供的 Tomcat 5.5/6 已內建自動做 Daily Rolling 的設定,不用想太多這些有的沒的。
  2. Linux 套件沒有內建 Daily Rolling 的話也無妨,利用 crontab 在半夜時分將 tomcat 暫停,把舊檔案改名,再重新啟動 tomcat 也是一種解決方法。這種方式還可以插進備份檔案的作業。
以上,無責任修改介紹說明完畢,謝謝收看!