内存文件系统的再学习

news/2024/9/27 15:31:23

内存文件系统的再学习


背景

言出法随了.
昨天刚吐槽了 Linux会因为特殊的内存需求挤压导致Java进程宕机.今天早上七点半一个 devops 验证节点就出现了宕机. 
分析宕机问题很简单. 
但是根据问题学习和整理更重要和更难一些. 想着能够趁着这次自己手底下的宕机出现. 将问题再整理归纳一下.

宕机原因

七点半时, 系统压力大, 导致被OOMkiller查看方式:
sar -r 00时00分01秒 kbmemfree   kbavail kbmemused  %memused kbbuffers  kbcached  kbcommit   
06时50分02秒    403952    305152  49047800     99.18       176   2885544  54022920   
07时00分01秒    349652    272956  49102100     99.29       176   2908056  53999316   
07时10分03秒    409548    223676  49042204     99.17       176   2785008  54038912   
07时20分03秒    321328    183412  49130424     99.35       176   2846744  54060264   
07时30分02秒  31794708  32056468  17657044     35.71       172   3257904  23459236   
07时40分01秒  31821648  32113984  17630104     35.65       172   3289108  23468024可以看到 0720 时 基本上到了 99.35% 的最高值. 
然后可以看到 buffer 是3G左右. 然后 
dmesg -T |grep -i oom-killer -A 100 http-nio-5200-P invoked oom-killer: gfp_mask=0x6200ca(GFP_HIGHUSER_MOVABLE), nodemask=(null), order=0, oom_score_adj=0[六 5月 11 07:27:22 2024] [ pid ]   uid  tgid total_vm      rss pgtables_bytes swapents oom_score_adj name
[六 5月 11 07:27:22 2024] [  715]     0   715   110443    69459   917504        0             0 systemd-journal
[六 5月 11 07:27:22 2024] [  751]     0   751    29767     1295   237568        0         -1000 systemd-udevd

查看内存分布-1

top  然后输入大写的MPID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND2726 gdm       20   0 9828400   5.1g  23504 S   0.0  10.9   3208:53 gnome-shell7133 root      20   0   17.8g   4.0g   2720 S   0.0   8.5   5:45.59 java2840 root      20   0 2086996   1.6g   2876 S   0.0   3.4   2064:10 redis-server
10195 root      20   0 2364352 418004   2992 S   0.0   0.8   6:48.30 gnome-software发现 图形化界面使用率较高.
还是的干掉.方式方法为:systemctl stop gdm.servicesystemctl disable gdm.servicesystemctl status gdm.servicesystemctl set-default multi-user.target

查看内存分布-2

df -Th 吸取 某项目的宕机原因
发现这个里面 /run 目录下面的使用量较高
然后使用 pgcacher 查看
发现有很多 journalctl 的日志记录信息
解决方法为:
journalctl --vacuum-time=1d
journalctl --vacuum-size=1G需要注意 应该也算是 CentOS的bug. 
不过我不知道为啥我那么多 systemd 的日志记
需要排查一下. 

pgcacher 图片

image


内存文件系统的再学习

df -Th |grep -v xfs |grep -v ext4
文件系统            类型      容量  已用  可用 已用% 挂载点
devtmpfs            devtmpfs   24G     0   24G    0% /dev
tmpfs               tmpfs      24G  1.2M   24G    1% /dev/shm
tmpfs               tmpfs      24G   82M   24G    1% /run
tmpfs               tmpfs      24G     0   24G    0% /sys/fs/cgroup
tmpfs               tmpfs     4.8G  5.7M  4.8G    1% /run/user/0然后 free -g 为total        used        free      shared  buff/cache   available
Mem:             47          20          23           0           3          26
Swap:             0           0           0发现内存文件系统 不仅仅是 /tmp 目录. 比如我这个系统 /tmp 竟然不是内存文件系统
但是其他的目录 比如
/dev 目录 是 内存文件系统, 更常用的是 /dev/null 
系统一般适用来处理部分驱动设备等. 
/run 的话一般是很多程序存放 socket 文件用的.
放到内存文件里面速度快. 
/tmp 像是tomcat 也会将 线程信息放进去. 这样处理也是速度较快. 
/sys 的话 就是系统管理的内容
/proc 其实一般也是内存文件系统. 
里面的东西都存在于内存. 也是速度快
free top 等统计工具都是从 /proc 里面后去信息进行展示的内存文件系统是 linux 快速出具分析结果的方式方法.
但是不能过分使用. 尤其是如果有垃圾数据进入了内存文件系统
其实会大量的占用可用内存. 导致影响正常的生产工作
需要注意.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/45959.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

云主机 Ubuntu 22.04.4 LTS 更新后每隔20分钟服务器就停止响应

翻看了好多日志, 最终发现这几行 Jun 8 00:59:21 vps-274006-mix NetworkManager[855]: <info> [1717801161.0426] manager: sleep: sleep requested (sleeping: no enabled: yes) Jun 8 00:59:21 vps-274006-mix ModemManager[1182]: <info> [sleep-monitor-…

[解决] chrome/edge浏览器打开F12开发者模式,点击应用标签崩溃

2024/6/11 晴 前一天都是好的,突然就出现题目的问题了,尝试了各种方法清理浏览器缓存 隐私模式 使用chorome, 使用edge 使用win11沙盒里面的edge搞得人很崩溃,恰好又遇到其他组件需要调试,一直没定位到问题. 直到今天 2024/6/20 终于解决了. 缩小了范围后,发现居然是网站的 man…

力扣-1353. 最多可以参加的会议数目

1.题目介绍 题目地址(1353. 最多可以参加的会议数目 - 力扣(LeetCode)) https://leetcode.cn/problems/maximum-number-of-events-that-can-be-attended/ 题目描述 给你一个数组 events,其中 events[i] = [startDayi, endDayi] ,表示会议 i 开始于 startDayi ,结束于 endD…

QLineEdit限定只能输入整数

QLineEdit限定输入整数时遇到的问题 问题 QValidator常常用于判断数据的合法性,QLineEdit,QSpinBox,QComboBox中经常使用该类。 QLineEdit要限制输入整数,那么添加语句lineEdit->setValidator(new QIntValidator(100, 1000, this)),理论上可以实现限定只能输入100-1000…

Sql注入之WAF绕过

WAF 拦截原理 WAF 绕过的思路就是让 WAF 的检测规则,识别不到你所输入的敏感字符,利用上述所介绍的知识点,灵活结合各种方法,从而可以增加绕过 WAF 的可能性.1. 关键词大小写绕过 有的WAF因为规则设计的问题,只匹配纯大写或纯小写的字符,对字符大小写混写直接无视,这时,…

【持续更新】重要FLIP总结

FLIP-27: Refactor Source Interface 流批一体API 1、解耦SplitEnumerator与SplitReader SplitEnumerator:发现并分配splits(比如files/kafka_partitions) SourceReader:从splits里实际读取数据 这样就使不同的splits分配策略与读取动作解耦,可分别封装成两个组件,Source…

Java-HashMap中put源码解读

1.背景Map类型 优点 缺点 线程安全性HashMap 1. 查询、插入、删除操作的时间复杂度为O(1)。2. 允许键和值为null。 1. 无序,不保证迭代顺序。2. 不是线程安全的。 LinkedHashMap 1. 保留插入顺序或访问顺序。2. 与HashMap性能相似。 1. 内存开销较高,因为维护了一个双向链表。…

大模型显存计算

大模型微调需要多少GPU显存?如:微调 1B 模型,16bit = 2byte全量微调显存占用分为:model weight(参数本身):10亿(bit) = 20亿(byte)约等于2GB训练模型时,通过一系列反向传播的方法,来更新模型参数,涉及以下gradient​和optimizer states​参数。不断计算梯度,以更…