歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux下/var/spool/clientmqueue空間不足的解決

Linux下/var/spool/clientmqueue空間不足的解決

日期:2017/2/28 13:57:18   编辑:Linux教程

今天收到一封報警郵件,內容如下:
------------------------------------

報警內容: Free disk space is less than 15% on volume /var
------------------------------------
報警級別: PROBLEM
------------------------------------
監控項目: Free disk space on /var (percentage):10 %
------------------------------------
報警時間:2015.10.07-09:56:24
這條報警郵件的信息已經很清楚了,是/var目錄下的空間不足了,我們來看一看是怎麼回事。
首先到目錄下查看df -h的時候,空間剩余9%,說明這個空間還在不斷的收縮中。
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 7.8G 908M 6.5G 13% /
/dev/sda6 7.8G 6.7G 746M 91% /var
/dev/sda5 7.8G 2.0G 5.5G 27% /usr
/dev/sda1 122M 12M 104M 10% /boot
tmpfs 48G 36K 48G 1% /dev/shm
/dev/shm 48G 36K 48G 1% /tmp
/dev/sda7 497G 391G 81G 83% /home
然後在/var/spool/clientmqueue下發現了大量的文件,絕大部分的空間消耗都在這兒。
隨便拿出一條來看看到底是什麼內容。發現是一個腳本在檢查listener的日志。
# more dfs32Ct1KE012443
Start: 20140402205501
checking listener listener ...OK
checking listener listener_1525 ...OK
checking listener listener_1528 ...OK
checking listener listener_1523 ...OK
checking listener listener_1522 ...OK
End: 20140402205516
進一步進行驗證,拿出最新的5個文件,查看文件內容也是如此。
clientmqueue]# ls -lrt|tail -5
-rw-rw---- 1 Oracle smmsp 228 Oct 7 10:02 dft97221Lc010415
-rw-rw---- 1 oracle smmsp 919 Oct 7 10:03 qft97231cW026036
-rw-rw---- 1 oracle smmsp 228 Oct 7 10:03 dft97231cW026036
-rw-rw---- 1 oracle smmsp 919 Oct 7 10:04 qft97241rm007778
-rw-rw---- 1 oracle smmsp 228 Oct 7 10:04 dft97241rm007778
clientmqueue]# more dft97241rm007778
Start: 20151007100401
checking listener listener ...OK
checking listener listener_1525 ...OK
checking listener listener_1528 ...OK
checking listener listener_1523 ...OK
checking listener listener_1522 ...OK
End: 20151007100416
說明基本可以說明是因為檢查listener的腳本產生了大量的日志文件。
因為這種日志文件對我們確實沒有太多的用處,可以考慮刪除,當然直接刪除還是會報錯誤的,可以慢慢分批刪除 ls|xargs -n 10 rm
刪除後空間馬上釋放出來了。釋放了近6G的文件。
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 7.8G 908M 6.5G 13% /
/dev/sda6 7.8G 1.1G 6.4G 15% /var
/dev/sda5 7.8G 2.0G 5.5G 27% /usr
/dev/sda1 122M 12M 104M 10% /boot
tmpfs 48G 36K 48G 1% /dev/shm
/dev/shm 48G 36K 48G 1% /tmp
/dev/sda7 497G 391G 81G 83% /home

問題現在解決了,我們來看看問題是怎麼回事,對於crontab 中設置的job如果有輸出內容,這些內容會以mail的形式發送給對應的cron job用戶,如果這個時候sendmail沒有啟動就會在這個路徑下產生這些日志文件。
首先抓取了最新的文件內容。可以看到文件生成的頻率很高,幾乎是每分鐘一個文件。
clientmqueue]# ll
total 64
-rw-rw---- 1 oracle smmsp 228 Oct 7 10:08 dft97281ag005351
-rw-rw---- 1 oracle smmsp 228 Oct 7 10:09 dft97292uQ011260
-rw-rw---- 1 oracle smmsp 228 Oct 7 10:12 dft972C1Xg025752
-rw-rw---- 1 oracle smmsp 228 Oct 7 10:13 dft972D11d025507
-rw-rw---- 1 oracle smmsp 228 Oct 7 10:14 dft972E1IS008404
-rw-rw---- 1 oracle smmsp 228 Oct 7 10:15 dft972F1Oi023669
-rw-rw---- 1 oracle smmsp 228 Oct 7 10:16 dft972G1Xr006590
-rw-rw---- 1 oracle smmsp 228 Oct 7 10:17 dft972H1I8022068
-rw-rw---- 1 oracle smmsp 919 Oct 7 10:08 qft97281ag005351
-rw-rw---- 1 oracle smmsp 919 Oct 7 10:09 qft97292uQ011260
-rw-rw---- 1 oracle smmsp 919 Oct 7 10:12 qft972C1Xg025752
-rw-rw---- 1 oracle smmsp 919 Oct 7 10:13 qft972D11d025507
-rw-rw---- 1 oracle smmsp 919 Oct 7 10:14 qft972E1IS008404
-rw-rw---- 1 oracle smmsp 919 Oct 7 10:15 qft972F1Oi023669
-rw-rw---- 1 oracle smmsp 919 Oct 7 10:16 qft972G1Xr006590
-rw-rw---- 1 oracle smmsp 919 Oct 7 10:17 qft972H1I8022068

查看crontab -l可以看到,檢查腳本執行的頻率還是很高的。
2-9,12-29,31-59 * * * * . $HOME/.xxxxprofile;$HOME/dbadmin/scripts/lsnr_check.sh
對於listener的檢查,其實不需要這麼頻繁的監控,可以適當把頻率放慢一些,根據普遍的機器設置還是一個小時2次檢查。比如這樣設置:
9,39 * * * * . $HOME/.xxxxprofile;bash $HOME/dbadmin/scripts/lsnr_check.sh
日志文件清除了,日志文件的生成頻率也降低了,但是問題還是指標沒有治本。
對於這些檢查日志,可以當做一個後台任務,不需要每次檢查都生成大量的日志,一種方式就是直接屏蔽日志,比如設置為下面的形式。
9,39 * * * * . $HOME/.xxxxprofile;bash $HOME/dbadmin/scripts/lsnr_check.sh > /dev/null 2>&1
這樣這個問題的解決就告一段落了,可見一個很細小的變化經過長年累月的積累就會成為一個明顯的問題,監控中的設置頻率過高反而可能有潛在的問題。

Copyright © Linux教程網 All Rights Reserved