问题背景:
在云服务器上安装了dockr,跑了nacos,mysql,redis。然后只要我本地服务启动访问服务器,半个小时就宕机了,后台也登录不进去。
解决流程:
1.先安装了atop,保存机器运行记录。工具安装可以参考下面的文章
进入目录
cd /var/log/atop
查看日志
atop -r atop_20240109 -b 202401092127
进入云平台找到时间,确定宕机的时间
查看发生故障时候的数据
这里可以看到是kswapd0占用内存最高
那接下来就是解决占用过高的问题。
kswapd0进程占用大量cpu - 知乎一、缓存机制介绍在Linux系统中,为了提高文件系统性能,内核利用一部分物理内存分配出缓冲区,用于缓存系统操作和数据文件,当内核收到读写的请求时,内核先去缓存区找是否有请求的数据,有就直接返回,如果没有…https://zhuanlan.zhihu.com/p/671575296说白了就是,阿里服务器默认swappiness为0了,所以我这里就直接改了下这个值,现在还不知道有没有效果,后续继续观察。设置步骤看下面的文章。
更新
后续操作:以上效果都不是很明显,降了一段时间后还是升上去了。
继续排查:
在docker中,把服务一个个关闭测试,最后发现是mysql占了大量内存,没有什么好的办法,直接接入了阿里云的mysql数据库服务。把数据库迁移出来了,这样内存占用情况降低15%左右。
这个效果还是不够理想,但是目前阶段先让这么用着,最起码不会半小时就宕机一次,后续在看下如何优化内存。2G内存跑mysql,跑docker,跑jdk,跑nacos,好像是有点勉强😥。不过好在现在稳定了