tomcat业务服务器内存使用高问题处理

问题描述:
一台服务器运行着3个tomcat,服务器内存为128G,有一天发现内存使用95%了,
网上搜索了下,说是通过设置环境变量来改变arena的数量,例如export MALLOC_ARENA_MAX=1 内容写的比较复杂,可能是glibc为了分配内存的性能的问题,也可能是JDK版本的问题,如下:
http://blog.csdn.net/chen19870707/article/details/43202679
http://blog.2baxb.me/archives/918

继续查看问题,手动停止了tomcat业务,但是内存还是不能释放,想到直接释放下内存缓存,的确很有效,如下:

[root@server05 tomcat1]# cat /proc/sys/vm/drop_caches
0
[root@server05 tomcat1]#  free -m
             total       used       free     shared    buffers     cached
Mem:        129007     125052       3955          0        255       4008
-/+ buffers/cache:     120788       8219

Swap:         7999          0       7999

[root@server05 tomcat1]# sync 注意:在清空缓存之前使用sync命令同步数据到磁盘
[root@server05 tomcat1]# echo 3 > /proc/sys/vm/drop_caches

[root@server05 ~]# free -g //发现缓存明显减少了
             total       used       free     shared    buffers     cached
Mem:           125          4        121          0          0          0
-/+ buffers/cache:          4        121
Swap:            7          0          7

释放后在修改回去echo 0 > /proc/sys/vm/drop_caches,启动tomcat业务,正常了。

参考:
drop_caches
Writing to this will cause thekernel to drop clean caches, dentries and
inodes from memory, causing thatmemory to become free.
To free pagecache:
         echo1 > /proc/sys/vm/drop_caches
To free dentries and inodes:
         echo2 > /proc/sys/vm/drop_caches
To free pagecache, dentries andinodes:
         echo3 > /proc/sys/vm/drop_caches
As this is a non-destructiveoperation and dirty objects are not freeable, the
user should run `sync' first.
http://www.kernel.org/doc/Documentation/sysctl/vm.txt
默认是0,1表示清空页缓存,2表示清空inode和目录树缓存,3清空所有的缓存
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于ssm+shiro+redis+nginx tomcat服务器集群管理项目源码+项目说明.zip Introduction ==== 1.搭建一个最简洁,模块划分最明确的ssm+swargger+shiro+redis+nginx整合项目,采用maven作为构建工具,在有新项目开发时可以借助此demo快速构建项目<br/> 2.实现shiro的授权信息缓存到redis数据库,减少关系数据库访问压力<br/> 3.实现session共享到redis,实现多服务器集群方案<br/> 4.配置文档中包含丰富的注释,搭建思路清晰的ssm项目框架<br/> 5.项目中的所有细节都会按照企业级开发的标准,展示如何遵循代码规范以及类文件doc注释的编写。<br/> 6.采用RESTFul的controller接口,展示RESTFul风格的API编写(shiro基于url的权限拦截与RESTFul API兼容性不好,后期可能会改写shiro以匹配RESTFul)<br/> 7.Junit单元测试,展示如何正确的使用Junit单元测试验证自己接口代码的健壮性<br/> 涉及到的技术 ==== springmvc+spring+mybatis:轻量级敏捷开发框架<br/> swargger:快速构建RestFul接口测试页面<br/> shiro:Apache开源权限管理框架,包括登录验证,授权,加密,会话管理<br/> redis:Nosql数据库,搭配shiro的会话管理功能将session存入redis中,实现tomcat服务器集群的session共享<br/> nginx:反向代理服务器,用来调度多台tomcat<br/> h2:内存数据库,用于测试<br/> 开发环境 ==== jdk1.8+mysql5.7.22+tomcat8.5.32+IDEA<br/> 项目部署 ==== 第一次部署项目<br/> 1.修改ssm-rs\resources目录下db.properties的数据库账号密码信息<br/> 2.启动redis服务端,修改ssm-rs\resources\spring-config目录下spring-shiro.xml中redis的连接信息,没设置密码的话auth留空<br/> 2.创建数据库train_db并执行根目录下的train_db.sql数据库脚本<br/> 3.进入到ssm-build目录下,执行clean install -Dmaven.test.skip=true,对整个项目进行构建<br/> 4.启动ssm-rs项目,浏览器访问http://localhost/ssm-rs/swagger-ui.html<br/> 项目模块 ==== ssm-build <br/> 项目聚合模块,可以进入该项目目录,对整个项目进行构建。<br/> mvn clean install -Dmaven.test.skip=true <br/> ssm-parent<br/> 父模块,其他模块会继承该模块,引入公共的依赖<br/> ssm-model<br/> 模型层模块,提供各种POJO。包括与数据库表对应的模型、传输模型等。提供给service层(ssm-cs)、controller层(ssm-rs)。<br/> ssm-commons<br/> 包含各种工具类<br/> ssm-cs<br/> service层和dao层,提供具体的业务逻辑和数据库访问,需要依赖ssm-model模块,并提供出来给ssm-rs模块调用<br/> ssm-rs<br/> controller层,提供RESTFul接口。<br/>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值