记spring boot线上项目内存优化
公司的一台云服务器部署了若干spring boot项目,内存配置从4G加到了16G,但还是很吃紧,因为这几个项目用户量不大,负载也不高,于是决定想办法优化一下内存占用。以其中一个项目为例记录一下优化过程。
优化前
以gradle bootRun命令启动项目以后,会产生三个进程:GradleDaemon、GradleMain和Application进程。
占用内存情况如下:
GradleDaemon和GradleMain进程合起来占用400多M,其实很多余,于是决定把项目打成jar包,通过java -jar命令来启动服务。
spring boot项目打成jar包
首先、在build.gradle文件里加上spring boot gradle plugin
plugins {
id "org.springframework.boot" version "1.5.9.RELEASE"
}
或者是
buildscript {
ext {
springBootVersion = '1.5.9.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath(
"org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: 'org.springframework.boot'
其次、因为目的是打成可执行jar包,所以还要加上
apply plugin: 'java'
然后、写上mainClass
bootRepackage {
mainClass = 'com.idatage.XXXApplication'
}
最后、命令行输入如下命令
gradle clean build
就在build/libs目录下生成可执行jar包了。
再看内存占用
现在GradleDaemon和GradleMain进程都没有了。但是...
内存占用不降反增。看来我得靠调节jvm参数了。
调节jvm参数
通过设定Xmx(程序运行期间最大可占用的内存大小)、Xss(jvm启动的每个线程分配的内存大小)、XX:ParallelGCThreads(GC线程数)以及关闭了JIT功能,达成了降低内存占用的目的。
java -Xmx128m -Xss256k -XX:ParallelGCThreads=2 -Djava.compiler=NONE -jar build/libs/XXX.jar
现在内存降到了200M以内了。
为了确保Xmx128m这个参数值合理,我用了jvisualvm这个工具查看启动时的堆使用情况:
可以看到实际使用的堆大小不超过75M,所以128M应该还是可以的。
作者:wubin1989
链接:https://www.jianshu.com/p/abd9c24a6910
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
记spring boot线上项目内存优化的更多相关文章
- Spring Boot 定制与优化内置的Tomcat容器
1.Spring Boot定制与优化内置Tomcat容器. > 内置的容器有三个分别是Undertow.Jetty.Tomcat,Spring Boot 对这三个容器分别进行了实现,它们上层接口 ...
- Spring Boot 实战与原理分析视频课程
Spring Boot 实战与原理分析视频课程 链接:https://pan.baidu.com/share/init?surl=PeykcoeqZtd1d9lN9V_F-A 提取码: 关注公众号[G ...
- Spring boot 内存优化
转自:https://dzone.com/articles/spring-boot-memory-performance It has sometimes been suggested that Sp ...
- Spring Boot 性能优化
spring 框架给企业软件开发者提供了常见问题的通用解决方案,包括那些在未来开发中没有意识到的问题.但是,它构建的 J2EE 项目变得越来越臃肿,逐渐被 Spring Boot 所替代.Spring ...
- 15套java架构师、集群、高可用、高可扩展、高性能、高并发、性能优化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战视频教程
* { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩展. ...
- 从零一起学Spring Boot之LayIM项目长成记(三) 数据库的简单设计和JPA的简单使用。
前言 今天是第三篇了,上一篇简单模拟了数据,实现了LayIM页面的数据加载.那么今天呢就要用数据库的数据了.闲言少叙,书归正传,让我们开始吧. 数据库 之前有好多小伙伴问我数据库是怎么设计的.我个人用 ...
- 这样优化Spring Boot,启动速度快到飞起!
微服务用到一时爽,没用好就呵呵啦,特别是对于服务拆分没有把控好业务边界.拆分粒度过大等问题,某些 Spring Boot 启动速度太慢了,可能你也会有这种体验,这里将探索一下关于 Spring Boo ...
- 从零一起学Spring Boot之LayIM项目长成记(五)websocket
前言 距离上一篇已经比较久的时间了,项目也是开了个头.并且,由于网上的关于Spring Boot的websocket讲解也比较多.于是我采用了另外的一个通讯框架 t-io 来实现LayIM中的通讯功能 ...
- 从零一起学Spring Boot之LayIM项目长成记(四) Spring Boot JPA 深入了解
前言 本篇内容主要是一些关于JPA的常用的一些用法等.内容也是很多是看其他博客学来的,顺道在本系列博客里抽出一篇作为总结.下面让我们来看看吧. 不过我更推荐大家读本篇:https://lufficc. ...
- Java 架构师+高并发+性能优化+Spring boot大型分布式项目实战
视频课程内容包含: 高级 Java 架构师包含:Spring boot.Spring cloud.Dubbo.Redis.ActiveMQ.Nginx.Mycat.Spring.MongoDB.Zer ...
随机推荐
- SpringBooot3.4集成Swagger knife4j-openapi3 Knife4j文档请求异常
## Pom引入 SpringBooot3.4的版本 <dependency> <groupId>com.github.xiaoymin</groupId> < ...
- 使用systemd 监控服务并实现故障自动重启
一.为什么需要自动重启? 在生产环境中,服务可能因内存溢出.资源竞争.外部依赖中断等问题意外崩溃.手动恢复效率低下,而 systemd 的自动重启机制可在秒级内恢复服务,显著提升系统可用性. ⚙️ 二 ...
- Xamarin.Android 设置BaseAdapter 的基础公共类
https://blog.csdn.net/sinat_26562875/article/details/51447785 /// <summary> /// 通用适配器 /// < ...
- 安卓端-APPUI自动化实战【下】
上一篇介绍了在solopi端的二次开发内容,接下来介绍下服务端的实现原理. 框架介绍: 使用比较成熟封装度较高的开源框架,尽量减少二次开发难度:Pear Admin Boot: 基 于 Spring ...
- Java开发笔记(一百五十三)时间戳的获取和转换
日期时间是Java一个重要的数据类型,常见的日期时间格式通常为"yyyy-MM-dd HH:mm:ss",但是计算机中存储的日期时间并非字符串形式,而是长整型的时间戳.因为字符串又 ...
- Educational Codeforces Round 95 ABC 题解
A. Buying Torches 题意:合成一个物品需要一个a和一个b,一开始有一个a.现在有下面两种操作: 1.用1个a换x个a. 2.用y个a换1个b. 问你合成k个物品最少需要多少次操作. 思 ...
- 删除emp_no重复的记录,只保留最小的id对应的记录。
简介 删除emp_no重复的记录,只保留最小的id对应的记录. DELETE FROM titles_test where id not in( select * from( select MIN(i ...
- shell 一下子创建多个 文件 和文件夹
#!bin/bash seq -f "led%01g" 0 35| xargs mkdir for((i = 0;i<36;i++)) do led="led&qu ...
- java 中 sleep & wait 的区别
简介 简单来说 一个和线程同步有关, 一个单纯的线程延迟等待. 1.sleep是线程中的方法,但是wait是Object中的方法. 2.sleep方法不会释放lock,但是wait会释放,而且会加入到 ...
- SciTech-Mathmatics-Probability+Statistics-II-Population:Parameter Estimation + Samples:Statistics 总体的参数估计 和 样本统计量
SciTech-Mathmatics-Probability+Statistics-Population:Region Parameter Estimation of Population + Sta ...