Linux下處理catalina.out文件過大的問題

 

      兩年前在騰訊雲購買了一個服務器,並用tomcat作爲容器部署了應用。當時買服務器選的是50G的空間,按理說,小型應用應該是絕對足夠了,最近上去df了一下,發現已佔用了85%的空間,一下就慌了。


root@VM-0-4-ubuntu:/usr/tomcat# df
Filesystem     1K-blocks     Used Available Use% Mounted on
udev              938580        0    938580   0% /dev
tmpfs             191716    19884    171832  11% /run
/dev/vda1       51474044 41431080   7405196  85% /
tmpfs             958576       48    958528   1% /dev/shm
tmpfs               5120        0      5120   0% /run/lock
tmpfs             958576        0    958576   0% /sys/fs/cgroup
tmpfs                100        0       100   0% /run/lxcfs/controllers
tmpfs             191716        0    191716   0% /run/user/0

然後查找了一下大文件,使用指令 find ./ -size 100M,找到了一些大文件,最重要的是逮到了一條大魚,/tomcat/logs/catalina.out 29G!,從沒見過這麼大的日誌文件,而且是獨一個。

-rw-r--r-- 1 root root  20K Apr 21 23:40 catalina.2020-04-21.log
-rw-r--r-- 1 root root  31K Apr 22 23:56 catalina.2020-04-22.log
-rw-r--r-- 1 root root  16K Apr 23 23:59 catalina.2020-04-23.log
-rw-r--r-- 1 root root 1.3M Apr 24 14:52 catalina.2020-04-24.log
-rw-r--r-- 1 root root  30K Apr 24 15:07 catalina.2020-04-24.out
-rw-r--r-- 1 root root  29G Apr 24 14:49 catalina.out

不像其他日誌那樣可以按照時間切分,這樣對維護來說,絕對是個頭疼的問題,既不利於管理,也不利於分析統計。網上的解決方案大概有以下幾類:

1.暴力型

      直接清空catalina.out,每次看到就來清空一下,使用 echo "  " >catalina.out,這樣當然是很直接的,但是日誌是生產環境的一個重要組成部分,沒了日誌就玩不動了,這樣肯定不行。

2.日誌切分

這種方式就是將一整塊的catalina.out,切分爲按時間劃分的單獨的部分(此處的切分是讓之後的日誌輸出有劃分,並不是值現在這個29G的大怪物)。使用cronolog日誌切分工具切分Tomcat的catalina.out日誌文件。

1>下載安裝cronolog

下載地址是外網的,親測無法直接下載,retry多次無法下載,只能通過其他途徑獲取,本想上傳上來,沒想到被別人先一步傳過了,收費9C幣,搶錢啊。下載點這裏cronolog-1.6.2.tar.gz

經過下載、解壓、編譯、安裝之後,cronlog就安裝在/usr/local/sbin下。

wget http://cronolog.org/download/cronolog-1.6.2.tar.gz  

tar zxvf cronolog-1.6.2.tar.gz

./cronolog-1.6.2/configure

make

make install


2.配置

在tomcat/bin/catalina.sh中

1>註釋掉 441行

# touch "$CATALINA_OUT"

 1>435與444行,兩處 日誌輸出路徑,作如下修改:

org.apache.catalina.startup.Bootstrap "$@" start \ >> "$CATALINA_BASE"/logs/catalina.out 2&1 &

改成:
org.apache.catalina.startup.Bootstrap"$@" start \ |/usr/local/sbin/cronolog "$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out >> /dev/null 2>&1 &


3.重啓tomcat,查看日誌輸出情況,發現最新的日誌已經分塊爲 catalina.2020-04-24.out,用指令 tail -f catalina.2020-04-24.out查看實時輸出的log,正常。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章