服务器内存是用接近完毕

这篇博客主要介绍了如何检查服务器内存使用情况,通过`free`命令展示内存详细信息,并解释了各字段含义。当内存使用达到一定阈值时,文章提供了脚本实现自动清理缓存,并给出了crontab设置定时任务的示例。此外,还展示了如何针对特定进程(如docker容器)查看内存使用,并使用`top`命令监控内存占用。最后,提供了一个清理缓存的shell脚本,包括执行前后内存状态的记录和判断清理条件。
摘要由CSDN通过智能技术生成

**

服务器内存是用接近完毕

**
查看服务器内存使用情况

free -m

free -h

![avatar][base64str]

清除缓存

echo 3 > /proc/sys/vm/drop_caches

输出结果


```bash
total	used	free	shared	buff/cahce	available
Mem	31Gi	11Gi	18Gi	249Mi	1.5Gi	19Gi
Swap	7.8Gi	0b	2.8Gi			

第一行

total: 内存总数
used: 已经使用内存数
free: 完全空闲内存
shared: 多个进程共享的内存 buffers:
用于块设备数据缓冲,记录文件系统me* tadata(目录,权限,属性等) cached: 用于文件内容的缓冲

第二行
Mem: 物理内存
-/+ buffers/cache: 基于应用角度考虑(计算已使用内存时减去buffers/cache,计算可使用内存时加上buffers/cache)的内存情况,也可理解为真实的内存使用情况.
Swap: 交换分区
永久释放缓存
需要在
vim /etc/sysctl.conf
添加配置vm.drop_caches=1/2/3

查看某个容器缓存使用的情况
查看容器

docker ps
id	name
asd	college

查看容器对应的进程

ps -ef | grep college/id
root	4819	4773	2	09:50	pts/0	00:04:32	java-jar /college.jar
root	16310	20692	0	13:30	pts/2	00:00:00	grep

这里的4819就是实际进程的ID

top -p 4819

PID	USER	PR	NI	VIRT	RES	SHR	S	%CPU	%MEM	TIME+	COMMAND
4819	root	20	0	11.6g	1.9g	17224	S	1/0	6.1	4:41.99	java

PID:进程的ID USER:进程所有者
PR:进程的优先级别,越小越优先被执行 NInice:值
VIRT:进程占用的虚拟内存
RES:进程占用的物理内存
SHR:进程使用的共享内存
S:进程的状态。
S表示休眠,
R表示正在运行,
Z表示僵死状态,
N表示该进程优先值为负数
%CPU:进程占用CPU的使用率 %
MEM:进程使用的物理内存和总内存的百分比
TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
COMMAND:进程启动命令名称

清理脚本缓存内容

#!/bin/bash
USED_CURRENT=`free -m | awk 'NR==2' | awk '{print $3}'`
FREE_CURRENT=`free -m | awk 'NR==2' | awk '{print $4}'`

crontab定时任务不能使用绝对路径,不会自动执行

TARGETFILE='/root/data/test/cleanCache.log'
DATETIME=$(date +"%Y年%m月%d日 %H时%M分")
echo "===========================" >> $TARGETFILE
echo "执行清空缓存时间 ${DATETIME}" >> $TARGETFILE
echo "清理缓存前: | [Used:${USED_CURRENT}MB][Free:${FREE_CURRENT}MB]" >> $TARGETFILE

if [ $FREE_CURRENT -le 21000 ]
then
	sync && echo 1 > /proc/sys/vm/drop_caches
	sync && echo 2 > /proc/sys/vm/drop_caches

执行3的时候会执行1和2,不需要重复执行

	sync && echo 3 > /proc/sys/vm/drop_caches
	USED_CLEAN=`free -m | awk 'NR==2' | awk '{print $3}'`
	FREE_CLEAN=`free -m | awk 'NR==2' | awk '{print $4}'`
	echo "清理缓存后: | [Used:${USED_CLEAN}MB][Free:${FREE_CLEAN}MB]" >> $TARGETFILE
else
	echo "不需要清理缓存" >> $TARGETFILE
fi
echo "===========================" >> $TARGETFILE

1.通过Xftp上传脚本cleanCache.sh至目标路径下
2.执行chmod 777 cleanCache.sh
3.vim cleanCache.sh进入编辑模式,执行:set fileformat=unix后执行:wq保存修改。
4.crontab -e */30 * * * * /home/test/cleanCache.sh

college top -p 4819 1506.5
fast-dfs
top -p 3717 1508.0
mysql
top -p 4351
activemq
top -p 7216,7263,26714
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值