前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何优化你的 SpringBoot ?

如何优化你的 SpringBoot ?

作者头像
周三不加班
发布于 2019-09-05 10:32:33
发布于 2019-09-05 10:32:33
52300
代码可运行
举报
文章被收录于专栏:程序猿杂货铺程序猿杂货铺
运行总次数:0
代码可运行

在SpringBoot的Web项目中,默认采用的是内置Tomcat,当然也可以配置支持内置的jetty,内置有什么好处呢?

  1. 方便微服务部署。
  2. 方便项目启动,不需要下载Tomcat或者Jetty

针对目前的容器优化,目前来说没有太多地方,需要考虑如下几个点

  • 线程数
  • 超时时间
  • jvm优化

针对上述的优化点来说,首先线程数是一个重点,初始线程数和最大线程数,初始线程数保障启动的时候,如果有大量用户访问,能够很稳定的接受请求。

而最大线程数量用来保证系统的稳定性,而超时时间用来保障连接数不容易被压垮,如果大批量的请求过来,延迟比较高,不容易把线程打满。这种情况在生产中是比较常见的 ,一旦网络不稳定,宁愿丢包也不愿意把机器压垮。

jvm优化一般来说没有太多场景,无非就是加大初始的堆,和最大限制堆,当然也不是无限增大,根据的情况进快速开始

在spring boot配置文件中application.yml,添加以下配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server:
  tomcat:
    min-spare-threads: 20
    max-threads: 100
  connection-timeout: 5000

这块对tomcat进行了一个优化配置,最大线程数是100,初始化线程是20,超时时间是5000ms

Jvm优化

这块主要不是谈如何优化,jvm优化是一个需要场景化的,没有什么太多特定参数,一般来说在server端运行都会指定如下参数

初始内存和最大内存基本会设置成一样的,具体大小根据场景设置,-server是一个必须要用的参数,至于收集器这些使用默认的就可以了,除非有特定需求。

1.使用-server模式

设置JVM使用server模式。64位JDK默认启动该模式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
java -server -jar springboot-1.0.jar

2.指定堆参数

这个根据服务器的内存大小,来设置堆参数。

  • -Xms :设置Java堆栈的初始化大小
  • -Xmx :设置最大的java堆大小
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
java -server -Xms512m -Xmx768m  -jar springboot-1.0.jar

设置初始化堆内存为512MB,最大为768MB。

3.远程Debug

在服务器上将启动参数修改为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
java -Djavax.net.debug=
ssl -Xdebug -Xnoagent -Djava.compiler=
NONE -Xrunjdwp:transport=
dt_socket,server=y,suspend=
n,address=8888 -jar springboot-1.0.jar

这个时候服务端远程Debug模式开启,端口号为8888。

在IDEA中,点击Edit Configuration按钮。

出现弹窗,点击+按钮,找到Remote选项。

在【1】中填入Remote项目名称,在【2】中填IP地址和端口号,在【3】选择远程调试的项目module,配置完成后点击OK即可

如果碰到连接超时的情况,很有可能服务器的防火墙的问题,举例CentOs7,关闭防火墙

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动

点击debug按钮,IDEA控制台打印信息:

说明远程调试成功。

JVM工具远程连接

jconsole与Jvisualvm远程连接

通常我们的web服务都是部署在服务器上的,在window使用jconsole是很方便的,相对于Linux就有一些麻烦了,需要进行一些设置。

1.查看hostname,首先使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
hostname -i

查看,服务器的hostname为127.0.0.1,这个是不对的,需要进行修改

2.修改hostname

修改/etc/hosts文件,将其第一行的“127.0.0.1 localhost.localdomain localhost”,修改为:“192.168.44.128 localhost.localdomain localhost”.“192.168.44.128”为实际的服务器的IP地

3.重启Linux,在服务器上输入hostname -i,查看实际设置的IP地址是否为你设置的

4.启动服务,参数为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
java -jar -Djava.rmi.server.hostname=192.168.44.128 -
Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=911 -
Dcom.sun.management.jmxremote.ssl=false -
Dcom.sun.management.jmxremote.authenticate=false jantent-1.0-SNAPSHOT.jar

ip为192.168.44.128,端口为911 。

5.打开Jconsole,进行远程连接,输入IP和端口即可

点击连接,经过稍稍等待之后,即可完成连接,如下图所示:

同理,JvisualVm的远程连接是同样的,启动参数也是一样。

然后在本机JvisualVm输入IP:PORT,即可进行远程连接:如下图所示:

相比较Jvisualvm功能更加强大一下,界面也更美观~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员啊粥 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
优化你的Spring Boot
在SpringBoot的Web项目中,默认采用的是内置Tomcat,当然也可以配置支持内置的jetty,内置有什么好处呢?
用户1516716
2019/07/15
9100
优化你的Spring Boot
JVM活学活用——优化springboot
介绍 在SpringBoot的Web项目中,默认采用的是内置Tomcat,当然也可以配置支持内置的jetty,内置有什么好处呢? 1. 方便微服务部署。 2. 方便项目启动,不需要下载Tomcat或者Jetty 针对目前的容器优化,目前来说没有太多地方,需要考虑如下几个点 线程数 超时时间 jvm优化 针对上述的优化点来说,首先线程数是一个重点,初始线程数和最大线程数,初始线程数保障启动的时候,如果有大量用户访问,能够很稳定的接受请求, 而最大线程数量用来保证系统的稳定性,而超时时间用来保障
Janti
2018/04/10
6.9K0
JVM活学活用——优化springboot
JVM性能分析神器-VisualVM
JVM本身为我们提供了很多性能监控的工具,其中有基于命令行的也有基于图形用户界面的,而个人感觉VisualVM就是其中最优秀的一个工具。
Java学习录
2019/05/17
1K0
zabbix监控jvm内存
Zabbix自带监控系统的内存利用率和CPU利用率,但是系统内存并不能反应JVM内存情况
陈灬大灬海
2019/09/12
5.4K2
zabbix监控jvm内存
这款 Java 性能调优的可视化工具,太强了!
VisualVM 是Netbeans的profile子项目,已在JDK6.0 update 7 中自带,能够监控线程,内存情况,查看方法的CPU时间和内存中的对 象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪几个对象分配出来的)。在JDK_HOME/bin(默认是C:\Program Files\Java\jdk1.6.0_13\bin)目录下面,有一个jvisualvm.exe文件,双击打开,从UI上来看,这个软件是基于NetBeans开发的了。
码猿技术专栏
2024/04/12
4910
这款 Java 性能调优的可视化工具,太强了!
深入浅出JVM调优,看完你就懂
JVM把内存区分为堆区(heap)、栈区(stack)和方法区(method)。由于本文主要讲解JVM调优,因此我们可以简单的理解为,JVM中的堆区中存放的是实际的对象,是需要被GC的。其他的都无需GC。
全栈程序员站长
2022/09/05
5690
深入浅出JVM调优,看完你就懂
基于JVisualVM的可视化监控
本小节我们介绍一下如何使用JDK自带的jvisualvm工具来监控本地的Java进程,该工具是一个图形化的监控工具。
端碗吹水
2020/09/23
2.3K0
基于JVisualVM的可视化监控
图文手把手教你JCONSOLE监控程序运行状态
概念: jconsole是jdk自带的一款图形化监控和管理工具。可用于查看java程序运行过程中的内存、线程、类等重要信息。jconsole可直接连接本地java程序,也可远程连接运行中的java程序
苦叶子
2024/04/14
2K0
图文手把手教你JCONSOLE监控程序运行状态
JVM虚拟机监控及性能调优实战
程序视点
2025/01/17
1910
JVM虚拟机监控及性能调优实战
分享几款超好用的JVM调优工具,建议收藏!
在之前的文章中,我们介绍了 JVM 常用的命令使用,通过这些命令可以快速的查询线上服务的性能情况和排查相关的问题。
Java极客技术
2024/04/25
3.7K0
分享几款超好用的JVM调优工具,建议收藏!
JVM学习二
jps、jstat、jinfo、jhat、jstack、jconsole、jmap、MAT、Btrace、psi_probe监控tomcat,通过gceasy查看和GCViewer查看GC,从而解决问题。
路行的亚洲
2020/07/17
5840
Java虚拟机(七):JVM调优案列
   什么是jvm调优呢?jvm调优就是根据gc日志分析jvm内存分配、回收的情况来调整各区域内存比例或者gc回收的策略;更深一层就是根据dump出来的内存结构和线程栈来分析代码中不合理的地方给予改进。eclipse优化主要涉及的是前者,通过gc日志来分析。本文主要是通过分析eclipse gc日志为例来示例如何根据gc日志来分析jvm内存而进行调优,像根据关闭eclipse启动项、关闭各种校验等措施来优化eclipse本文不再阐述,网上有很多,本次测试的eclipse已经进行了配置上面的优化。
朝雨忆轻尘
2019/06/19
6270
Java虚拟机(七):JVM调优案列
【干货】JVM 优化、内存泄露排查、gc.log 分析方法等
本文讲解了 JVM 的内存划分和分配策略,并以截图和脚本展示常用可视化和命令行工具的使用方法,完整演示了 JVM 优化、内存泄露排查、gc.log 分析方法等。
IT技术小咖
2019/06/26
5.8K0
【干货】JVM 优化、内存泄露排查、gc.log 分析方法等
学习笔记0530----Tomcat扩展
分别复制tomcat目录下的 conf logs temp webapps work 这5个目录到 test1 和 test2下。
嘻哈记
2020/11/24
6620
JVM 监控工具 jstack 和 jvisualvm 的使用
* 等待:waitting(无限期等待),timed waitting(限期等待)
大道七哥
2019/09/10
1.5K0
JVM 监控工具 jstack 和 jvisualvm 的使用
JConsole监控远程WebLogic和Tomcat
JConsole可以对远程主机上的Java进程的内存使用情况进行监控。本文将讲解如何使用JConsole监控远程主机上的WebLogic和Tomcat。
星哥玩云
2022/07/04
1.8K0
JConsole监控远程WebLogic和Tomcat
JVM调优工具总结(jConsole jmc jvisualvm)
一、环境准备,centos7服务器一台,安装jdk1.8,一个可运行java的jar包,最好是有个服务器运维工具,我用的是宝塔面板,主要是用来开放端口,当然你是用命令开放也可以的。
全栈程序员站长
2022/09/04
9080
JVM调优工具总结(jConsole jmc jvisualvm)
使用VisualVM、JMC远程监控JVM 原
VisualVM is a visual tool integrating commandline JDK tools and lightweight profiling capabilities. Designed for both development and production time use.
wuweixiang
2018/08/14
2.3K0
使用VisualVM、JMC远程监控JVM
                                                                            原
GC 性能调优
如果遭遇 Local host name unknown:XXX的错误,修改/etc/hosts文件,把XXX加入进去
RiemannHypothesis
2022/11/05
1.4K0
JVM史上最全实践优化没有之一
在jvm中有很多的参数可以进行设置,这样可以让jvm在各种环境中都能够高效的运行。绝大部分的参数保持默认即可。
海仔
2019/08/05
9130
JVM史上最全实践优化没有之一
相关推荐
优化你的Spring Boot
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验