返回顶部
首页 > 资讯 > 精选 >如何进行Spring Boot项目优化和JVM调优
  • 330
分享到

如何进行Spring Boot项目优化和JVM调优

2023-06-16 15:06:52 330人浏览 八月长安
摘要

这篇文章给大家介绍如何进行Spring Boot项目优化和JVM调优,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。项目调优作为一名工程师,项目调优这事,是必须得熟练掌握的事情。在 spring Boot 项目中,调优主

这篇文章给大家介绍如何进行Spring Boot项目优化JVM调优,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

项目调优

作为一名工程师,项目调优这事,是必须得熟练掌握的事情。在 spring Boot 项目中,调优主要通过配置文件和配置JVM的参数的方式进行。

修改配置文件

关于修改配置文件 application.properties,推荐《Spring Boot 项目详细的配置文件修改文档》

https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html#common-application-properties

其中比较重要的有:

server.Tomcat.max-connections=0 # Maximum number of connections that the server accepts and processes at any given time. server.tomcat.max-Http-header-size=0 # Maximum size, in bytes, of the HTTP message header. server.tomcat.max-http-post-size=0 # Maximum size, in bytes, of the HTTP post content. server.tomcat.max-threads=0 # Maximum number of worker threads. server.tomcat.min-spare-threads=0 # Minimum number of worker threads.

JVM 调优

关于 JVM 调优 oracle 官网有一份指导说明,有兴趣大家可以去看看。《Oracle 官网对 JVM 调优的说明》

https://docs.oracle.com/middleware/11119/wls/PERFM/jvm_tuning.htm#i1146060

JVM调优实战

1 未设置JVM参数的情况

现在有一个项目,默认情况下没有设置任何 JVM 参数。下面我来启动看一下。

如何进行Spring Boot项目优化和JVM调优

看一下堆栈分配,默认的最大堆内存分配了 8G,很明显不合理嘛。

如何进行Spring Boot项目优化和JVM调优

2 下面我们来设置下 JVM 参数

例如要配置 JVM 这么一大段参数:

-XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC

方式一

如果你用的是 idea开发工具来启动运行项目,那么要调试 jdk 就方便太多了。只需要将参数值设置到 VM Options 中即可。

如何进行Spring Boot项目优化和JVM调优

设置成功,我的 GC 日志和堆栈分配都已经 OK 了。GC 日志:

如何进行Spring Boot项目优化和JVM调优

堆栈分配:

如何进行Spring Boot项目优化和JVM调优

方式二

适用于在项目部署后,在启动的时候,采用脚本或者命令行运行的时候设置。先在项目路径下给项目打包,清理旧项目:

$ mvn clean

如何进行Spring Boot项目优化和JVM调优

打包新项目:

$ mvn package -DMaven.test.skip=true

打包完成后进入可运行 jar 包的路径下:

如何进行Spring Boot项目优化和JVM调优

执行启动设置 JVM 参数的操作:

$ java -jar -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms1024m  -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC  newframe-1.0.0.jar

这个时候你再看监控,就会发现已经 OK 了。堆栈都是按照启动时候设置的 JVM 参数启动的。

如何进行Spring Boot项目优化和JVM调优

关于这些设置的 JVM 参数是什么含义,请参考前面 Oracle 官方给出的调优文档。我在这里简单说一下:

-XX:MetaspaceSize=128m (元空间默认大小) -XX:MaxMetaspaceSize=128m (元空间最大大小) -Xms1024m (堆默认大小) -Xmx1024m (堆最大大小) -Xmn256m (新生代大小) -Xss256k (棧最大深度大小) -XX:SurvivorRatio=8 (新生代分区比例 8:2) -XX:+UseConcMarkSweepGC (指定使用的垃圾收集器,这里使用CMS收集器) -XX:+PrintGCDetails (打印详细的GC日志)

知识点

JDK8 之后把 -XX:PermSize 和 -XX:MaxPermGen 移除了,取而代之的是:

-XX:MetaspaceSize=128m (元空间默认大小) -XX:MaxMetaspaceSize=128m (元空间最大大小)

JDK8 开始把类的元数据放到本地化的堆内存(native heap)中,这一块区域就叫Metaspace,中文名叫元空间。

使用本地化内存有什么好处呢?

最直接的表现就是 java.lang.OutOfMemoryError: PermGen  空间问题将不复存在。因为默认的类的元数据分配只受本地内存大小的限制,也就是说本地内存剩余多少,理论上 Metaspace  就可以有多大,这解决了空间不足的问题(貌似容量还与操作系统的虚拟内存有关?这里不太清楚)。

不过,让 Metaspace 变得无限大显然是不现实的,因此我们也要限制 Metaspace 的大小:使用 -XX:MaxMetaspaceSize  参数来指定 Metaspace 区域的大小。JVM 默认在运行时根据需要动态地设置 MaxMetaspaceSize 的大小。

关于如何进行Spring Boot项目优化和JVM调优就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: 如何进行Spring Boot项目优化和JVM调优

本文链接: https://lsjlt.com/news/284040.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何进行Spring Boot项目优化和JVM调优
    这篇文章给大家介绍如何进行Spring Boot项目优化和JVM调优,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。项目调优作为一名工程师,项目调优这事,是必须得熟练掌握的事情。在 Spring Boot 项目中,调优主...
    99+
    2023-06-16
  • ASP、存储、Spring和Unix:如何在项目中进行优化和调试?
    在软件开发项目中,优化和调试是必不可少的步骤。这些步骤可以帮助开发人员更好地了解其代码,并确保其代码在生产环境中正常运行。本文将介绍如何在ASP、存储、Spring和Unix等技术中进行优化和调试。 ASP优化和调试 ASP是一种服务器端...
    99+
    2023-10-18
    存储 spring unix
  • 如何在PHP项目中进行性能调优和资源优化?
    如何在PHP项目中进行性能调优和资源优化?随着互联网的高速发展,越来越多的应用程序采用了PHP作为开发语言。由于PHP的易用性和灵活性,许多开发人员选择使用它来构建自己的网站和应用程序。然而,由于PHP的动态特性和解释性质,一些开发人员可能...
    99+
    2023-11-03
    性能调优 PHP项目 资源优化
  • 在AmazonAurora中如何进行性能调优和优化
    Amazon Aurora是一种关系型数据库服务,旨在提供高性能、高可靠性和可扩展性。要进行性能调优和优化,可以按照以下步骤进行: ...
    99+
    2024-04-09
    AmazonAurora
  • Cacti系统如何进行性能优化和调优
    Cacti 是一个用于监控网络设备和服务器性能的图形化工具,为了提高其性能和效率,可以进行以下优化和调优操作: 数据库优化:Ca...
    99+
    2024-03-15
    Cacti
  • 如何在MySQL中进行性能优化和调优
    有几种方法可以在MySQL中进行性能优化和调优: 使用合适的索引: 索引可以加快查询的速度。确保在经常使用的列上创建索引,并避免...
    99+
    2024-04-09
    MySQL
  • MariaDB中如何进行性能优化调优
    MariaDB 是 MySQL 的一个分支,因此在进行性能优化调优时,可以遵循类似的步骤。以下是一些常见的性能优化调优方法: 使...
    99+
    2024-04-02
  • 如何优化RequireJS项目
    本篇内容主要讲解“如何优化RequireJS项目”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何优化RequireJS项目”吧!本文将演示如何合并与压缩一个基...
    99+
    2024-04-02
  • 如何优化Vue项目
    这篇文章给大家介绍如何优化Vue项目,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Vue项目完成后就要从开发环境转成生产环境一些第三方的包体积过大,导致生成js文件过于庞大,这是时候可以生成打包报告来查看项目中的问题生...
    99+
    2023-06-15
  • Couchbase中怎么进行性能调优和优化
    Couchbase是一个高性能的NoSQL数据库,但是在特定情况下可能需要进行性能调优和优化。以下是一些常见的优化和调优方法: ...
    99+
    2024-03-08
    Couchbase
  • 如何在MariaDB中进行性能优化和调试
    在MariaDB中进行性能优化和调试可以采取以下几种方法: 使用性能分析工具:MariaDB提供了一些性能分析工具,如EXPLAI...
    99+
    2024-04-09
    MariaDB
  • 面试官:如何进行 JVM 调优(附真实案例)
    前言 面试官:在工作中做过 JVM 调优吗?讲讲做过哪些 JVM 调优? 我一个QPS不到10的项目,上次问我缓存穿透缓存雪崩,这次问我 JVM 调优,我是真滴难。 不过大家别慌,热心的我给大家找来了几个满分回答,大家选择合适的使用。 回...
    99+
    2023-08-31
    java 面试 经验分享 程序人生
  • 如何进行JVM虚拟机中Java的编译期优化与运行期优化
    这篇文章将为大家详细讲解有关如何进行JVM虚拟机中Java的编译期优化与运行期优化,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。java编译期优化java语言的编译期其实是一段不确定的操作过...
    99+
    2023-06-02
  • Spring Cloud Gateway如何优雅地进行feign调用
    之前写过一篇文章,介绍微服务场景下的权限处理,方案如下: 在实践中,上面的网关选型为Spring Cloud Gateway,所以这里就存在一个问题,即网关如何调用用户服务进行鉴权的问题。 在微服务...
    99+
    2023-09-12
    java 微服务 spring cloud gateway
  • MariaDB中如何进行查询优化和性能调整
    要在MariaDB中进行查询优化和性能调整,可以采取以下几种方法: 使用合适的索引:通过为经常查询的字段添加索引,可以加快查询速度...
    99+
    2024-04-09
    MariaDB
  • 如何在Oracle中进行数据库优化和调整
    在Oracle中进行数据库优化和调整可以通过以下方法: 使用SQL语句调整:优化查询语句,尽量避免全表扫描和使用索引等方式来提高...
    99+
    2024-04-09
    Oracle
  • 如何优化vue-webpack项目
    小编给大家分享一下如何优化vue-webpack项目,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!项目现状项目是一个数据监测平台...
    99+
    2024-04-02
  • Golang开发建议:如何进行高效的性能调优和优化
    Golang开发建议:如何进行高效的性能调优和优化随着互联网和大数据时代的到来,软件的性能要求也越来越高。作为一种快速、高效、并发性好的编程语言,Golang在构建高性能应用程序方面表现出色。然而,即使使用了Golang,也不意味着就能够轻...
    99+
    2023-11-22
    优化 Golang 性能调优
  • MySQL如何进行优化
    这篇文章主要讲解了“MySQL如何进行优化”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL如何进行优化”吧! 案例背景案例分析MySQL ...
    99+
    2024-04-02
  • 如何进行SEO优化
    这篇文章将为大家详细讲解有关如何进行SEO优化,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。SEO方案包括:1、网站SEO诊断先要给网站进行一个系统的SEO诊断,看看这个网站目前的优化情况到底是什么情况的...
    99+
    2023-06-10
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作