这篇文章是定位并解决,服务器运行一段时间之后,内存不足,导致微服务启动失败
我现在公司的开发环境是3台4核8G的服务器,其中项目使用的是springcloud框架,再开发环境中直接通过nohup 命令启动微服务,具体启动方式可以看这篇文章 linux系统如何启动微服务jar包 每台服务器上运行将近10个微服务,在系统运行的前几个月,系统正常运行,但是上个月,我在重启其中的某个微服务的时候,服务启动报错,我看了下日志,如下图: 内存不足,这个就很奇怪了,为什么之前几个月,从来没有这个问题出现,但是现在出现了这个问题,所以我直接使用命令 free -h 查看服务器的内存使用情况以及剩余内存状况。 如这张图所示,这里说下这个截图。
total: 内存总数 used: 已经使用内存数 free: 完全空闲内存 shared: 多个进程共享的内存 buffers: 用于块设备数据缓冲,记录文件系统metadata(目录,权限,属性等) cached: 用于文件内容的缓冲 available:真正剩余的可被程序应用的内存数avaliable是1.8G,buff/cache是1.9G,我个人感觉问题出在此处,为什么buff/cache这么大? 因为我之前刚配置服务器的时候,buff/cache绝对没有这么大,所以搜索了下,如何清理buff/cache。
命令如下:
a)清理pagecache(页面缓存) echo 1 > /proc/sys/vm/drop_caches b)清理dentries(目录缓存)和inodes echo 2 > /proc/sys/vm/drop_caches c)清理pagecache、dentries和inodes echo 3 > /proc/sys/vm/drop_caches运行命令之后,再次使用free -h命令,查看内存 重启最后一个微服务,成功。
参考我的这篇文章linux系统如何启动微服务jar包 原先我启动项目使用的是文章中的第三种方法nohup命令启动微服务的,内存如上图所示,用了5.6G,今天我将启动方式换成文章中的第四种,以系统服务启动 systemctl start *** 启动结束后,我看了下服务器的内存,再次减少1.4G的内存。