系統有時出現如下類似報錯:
WARNING: /tmp: File system full, swap space limit exceeded
出現這種報錯有如下幾種常見的原因:
1)物理內存不夠用;
2)Swap空間不夠用;
3)某些用戶在使用/tmp文件系統;
4)特定程序占用大量內存;
5)某些錯誤的腳本無限耗盡資源。
對於以上的原因造成的報錯可以采取如下措施:
1)增加物理內存。
2)增加Swap - 如下方法可以簡單地實現(注:增加的Swap會隨著系統的重起而消失)
#mkfile
[g | k | b | m] /swap
#swap -a /swap
- 運行“swap -l“可以確認追加的Swap。
3)告知用戶/tmp的使用時注意事項。
4)Kill程序。
5)修改腳本。
查找報錯的原因:
- 使用命令可查出占用最大資源的程序或有無無限耗盡資源的腳本。
# /usr/bin/ps -el | sort -rn -k 10
例:如何計算占資源大小
> bash-2.05# /usr/bin/ps -el | sort -rn -k 10
> 8 S 0 585 557 0 40 20 ? 16981 ? ? 0:04 Xsun
> bash-2.05# pagesize
> 8192
>
> 16981 * 8192 = 139108352byte 即 139M
例:有無限耗盡資源的腳本運行時
> 0 S 0 27982 27981 0 40 20 ? 328 ? ? 0:00 sh
> 0 S 0 27979 27978 0 40 20 ? 328 ? ? 0:00 sh
> 0 S 0 27975 27974 0 40 20 ? 328 ? ? 0:00 sh
> 0 S 0 27971 27970 0 40 20 ? 328 ? ? 0:00 sh
> 0 S 0 27967 27966 0 40 20 ? 328 ? ? 0:00 sh
> 0 S 0 27963 27962 0 40 20 ? 328 ? ? 0:00 sh
> 0 S 0 27981 27980 0 40 20 ? 327 ? ? 0:00 sh
> 0 S 0 27980 27979 0 40 20 ? 327 ? ? 0:00 sh
> 0 S 0 27978 27977 0 40 20 ? 327 ? ? 0:00 sh
- 察看有無用戶或程序在使用/tmp ?
# ls -alR /tmp > /log.tmp
# ls -alR /var/tmp > /log.var_tmp
- 其他可察看Memory和IO的命令:
# vmstat 5 5
# iostate 5 5