1.Linux的OOM機(jī)制
在linux中如果某個進(jìn)程占用了很大的內(nèi)存,會導(dǎo)致進(jìn)程被kill掉。
如果發(fā)現(xiàn)進(jìn)程被莫名的kill掉,可以去查看messages日志cat /var/log/messages
Jul 27 13:29:54 kernel: Out of memory: Kill process 17982 (java) score 77 or sacrifice child發(fā)現(xiàn)的確是oom了。
解決辦法:
1,限制java進(jìn)程的max heap,從而降低內(nèi)存使用
2,發(fā)現(xiàn)系統(tǒng)沒有開啟swap,給系統(tǒng)加swap空間(內(nèi)存數(shù)*2)
2.linux的/tmp清理機(jī)制
在Linux系統(tǒng)中/tmp文件夾里是存放臨時文件的,在一定的時間內(nèi)會被清理。默認(rèn)是30天
/etc/cron.daily/tmpwatch這個文件的作用就是刪除/tmp目錄下非規(guī)則且沒有訪問的文件文件夾.
文件內(nèi)容如下:
[hadoop@Hadoop001 hadoop]$ cat /etc/cron.daily/tmpwatch
#! /bin/sh
flags=-umc
/usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \
-x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \
-X '/tmp/hsperfdata_*' 10d /tmp
/usr/sbin/tmpwatch "$flags" 30d /var/tmp
for d in /var/{cache/man,catman}/{cat?,X11R6/cat?,local/cat?}; do
if [ -d "$d" ]; then
/usr/sbin/tmpwatch "$flags" -f 30d "$d"
fi
done
第一行相當(dāng)于一個標(biāo)記(參數(shù));
第二行就是針對/tmp目錄里面排除的目錄
第三行,這是對這個/tmp目錄的清理,下面的是針對其他目錄的清理。
在紅色部分附近/usr/sbin/tmpwatch "$flags" 30d /var/tmp這一行
紅色的表示30天的意思,這個就決定了30天清理/tmp下不訪問的文件。
你想一天一清理的話,就把這個30d改成1d。
但有個問題需要注意,如果你設(shè)置更短的時間來清理的話,比如說是30分鐘、10秒等等,
但你會發(fā)現(xiàn)重新電腦,這個并無效他不清理/tmp文件夾里面的內(nèi)容,
因為tmpwatch的上層目錄是/etc/cron.daily/,而這個目錄是一天執(zhí)行一次計劃
任務(wù),所以說,你設(shè)置了比一天更短的時間,他就不起作用了。
所以,在Centos6中,系統(tǒng)自動清理/tmp文件夾的默認(rèn)時限是30天