Linux系统清理内存

今天我的服务器突然变得很卡,通过free -m查看内存,发现只有不到100M的可用内存,而我在这台服务器上直运行了java应用程序,我的第一反应就是因为我不断关闭重启tomcat,但是进程却没有完全杀死,导致资源占用过多。
首先释放所有缓存echo 3 > /proc/sys/vm/drop_caches
drop_caches的值可以是0-3之间的数字,代表不同的含义:
0:不释放(系统默认值)
1:释放页缓存
2:释放dentries和inodes
3:释放所有缓存
这样做之后我再通过free -m查看,发现情况并没有好转,而且整个操作还是响应很慢。其实我们在第一次free -m查看内存的时候也注意到了,大部分内存是被使用的状态,可用的内存和缓存使用的内存都少于100M,所以在释放缓存之后可用内存并没有太多增长。所以在大部分都内存都是被使用的状态下,我们只能是杀死占用的进程,查看程序状态是否异常了。
首先,我们列出占用内存最多的十个进程。命令是:ps -aux | sort -k4nr | head -n 10。
然后发现前几个都是java进程,占用的内存大小明显超过了正常运行需要的内存大小。这里我没有进一步去分析原因,因为服务器此时操作以及相当卡顿了,急需释放内存,而我服务器上的服务有事容易重启的,所以我直接将这些进程杀死。杀死后服务器马上就操作流畅了,一看可用内存,有1700多兆。重新启动服务后,也有1500兆可用内存。在接下来的内存监控中发现内存占用保持稳定,问题初步解决。至于为什么会出现这种状况,搜了一下,网上说catalina.out文件会因为运行时间很长,变得越来越大,写日志时占用内存过大,导致访问变慢。暂时理解是这个原因吧,如果问题重现了我再进行分析。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 观其大纲 第1部分Linux的基础知识第1章Linux概述第2章Linux系统的安装KickStart开始自动安装...
    周少言阅读 1,552评论 1 10
  • 1 内存寻址 1.1 物理地址、虚拟地址以及线性地址 物理地址: 物理内存的内存单元地址 虚拟地址: 程序员看到的...
    疯狂小王子阅读 3,034评论 3 21
  • 本文转载来源 http://www.csdn.net/article/2015-09-18/2825737/1 (...
    yoosir阅读 1,145评论 0 5
  • 1. 硬链接和软连接区别 硬连接-------指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区...
    杰伦哎呦哎呦阅读 2,369评论 0 2
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,165评论 1 32