线上服务器shared占用很大
线上服务器shared占用很大
[root@ecs-5611 ~]# free -h
total used free shared buff/cache available
Mem: 15Gi 10Gi 1.3Gi 3.4Gi 4.0Gi 510Mi
Swap: 0B 0B 0B
[root@ecs-5611 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 7.5G 0 7.5G 0% /dev
tmpfs 7.7G 0 7.7G 0% /dev/shm
tmpfs 7.7G 18M 7.7G 1% /run
tmpfs 7.7G 0 7.7G 0% /sys/fs/cgroup
/dev/vda2 98G 30G 63G 33% /
tmpfs 7.7G 3.4G 4.4G 44% /tmp # 发现tmpfs 被挂载到了 /tmp 下
/dev/vda1 1022M 5.8M 1017M 1% /boot/efi
/dev/vdb1 492G 17G 450G 4% /data
tmpfs 1.6G 0 1.6G 0% /run/user/0
overlay 98G 30G 63G 33% /home/docker-data/overlay2/1e9ce9a42b4ae13671785f40a06a827adeaa7d3d1947f0ee92613661615628d7/merged
overlay 98G 30G 63G 33% /home/docker-data/overlay2/a8b0482bd16311cf594efac875148b9c691316bcb97ec1d0e0565cac644bf025/merged
shm 64M 0 64M 0% /home/docker-data/containers/56e63894cc7b2ec6243c4aadb3931040f429167d333af0e9fa9bcf2c0f68e57a/mounts/shm
shm 64M 0 64M 0% /home/docker-data/containers/42143b7514fac7e317395af8e505e96b2e6ae4cf7002e7113cfda7a250ed5a9c/mounts/shm
Tmpfs是什么
tmpfs是Linux/Unix系统上的一种基于内存的文件系统。tmpfs可以使用您的内存或swap分区来存储文件。由此可见,tmpfs主要存储 暂存的文件。
优势 :
1、 动态文件系统的大小。
2、tmpfs 的另一个主要的好处是它闪电般的速度。因为典型的tmpfs文件系统会完全驻留在内存 RAM 中,读写几乎可以是瞬间的。同时它也有一个缺点tmpfs数据在重新启动之后不会保留,因为虚拟内存本质上就是易失的。所以有必要做一些脚本做诸如加载,绑定的操作。
注意:tmpfs不具备持久性,重启后数据不保留,请务必注意。
Tmpfs大小调整
有时候,当应用程序使用到Tmpfs时,而在部署的时候如果没有对应用程序占用的内存做足够的评估时,就有可能把Tmpfs用满,这个时候就需要调整Tmpfs的大小了,当然,调整的大小不能大于你机器内存大小,否则,你只能换机器了,又或是优化你的应用程序。
umount tmpfs
在这里要注意,由于umount会把卸载tmpfs文件系统,意味着你的应用程序使用的共享内存将会被删除,如果数据较重要,在umount前记得备份。
umount可卸除目前挂在Linux目录中的文件系统。
- -a 卸除/etc/mtab中记录的所有文件系统。
- -h 显示帮助。
- -n 卸除时不要将信息存入/etc/mtab文件中。
- -r 若无法成功卸除,则尝试以只读的方式重新挂入文件系统。
- -t<文件系统类型> 仅卸除选项中所指定的文件系统。
- -v 执行时显示详细的信息。
- -V 显示版本信息。
- [文件系统] 除了直接指定文件系统外,也可以用设备名称或挂入点来表示文件系统。
umount -v /tmp
这里可以看到,umount失败了,原因比较明显,/tmp被其它进程使用了,所以在umount前需要把使用/dev/shm的所有进程都停掉。
如错误说明,可以使用fuser –km /tmp命令把加载的进程都kill掉,再进行umount
fuser –km /tmp
umount /tmp
调整tmpfs的大小
通过修改/etc/fstab文件来修改/dev/shm的容量,在文件中修改tmpfs行
tmpfs /dev/shm tmpfs defaults,size=xxx 0 0 #注意:size后面就是你要分配的空间大小
修改后,重新mount tmpfs即可。
mount /dev/shm