如何优化你的 SpringBoot ?
程序猿杂货铺
共 2369字,需浏览 5分钟
·
2019-09-03 09:25
戳上方蓝字 “程序猿杂货铺” 关注我 并 置顶星标!
你的关注意义重大!
原文 | https://dwz.cn/kr9Z6xq0
在SpringBoot的Web项目中,默认采用的是内置Tomcat,当然也可以配置支持内置的jetty,内置有什么好处呢?方便微服务部署。
方便项目启动,不需要下载Tomcat或者Jetty
线程数
超时时间
jvm优化
server:这块对tomcat进行了一个优化配置,最大线程数是100,初始化线程是20,超时时间是5000ms
tomcat:
min-spare-threads: 20
max-threads: 100
connection-timeout: 5000
Jvm优化
这块主要不是谈如何优化,jvm优化是一个需要场景化的,没有什么太多特定参数,一般来说在server端运行都会指定如下参数初始内存和最大内存基本会设置成一样的,具体大小根据场景设置,-server是一个必须要用的参数,至于收集器这些使用默认的就可以了,除非有特定需求。
1.使用-server模式
设置JVM使用server模式。64位JDK默认启动该模式java -server -jar springboot-1.0.jar
2.指定堆参数
这个根据服务器的内存大小,来设置堆参数。-Xms :设置Java堆栈的初始化大小
-Xmx :设置最大的java堆大小
java -server -Xms512m -Xmx768m -jar springboot-1.0.jar设置初始化堆内存为512MB,最大为768MB。
3.远程Debug
在服务器上将启动参数修改为:java -Djavax.net.debug=这个时候服务端远程Debug模式开启,端口号为8888。在IDEA中,点击Edit Configuration按钮。出现弹窗,点击+按钮,找到Remote选项。在【1】中填入Remote项目名称,在【2】中填IP地址和端口号,在【3】选择远程调试的项目module,配置完成后点击OK即可如果碰到连接超时的情况,很有可能服务器的防火墙的问题,举例CentOs7,关闭防火墙
ssl -Xdebug -Xnoagent -Djava.compiler=
NONE -Xrunjdwp:transport=
dt_socket,server=y,suspend=
n,address=8888 -jar springboot-1.0.jar
systemctl stop firewalld.service #停止firewall点击debug按钮,IDEA控制台打印信息:说明远程调试成功。
systemctl disable firewalld.service #禁止firewall开机启动
JVM工具远程连接
jconsole与Jvisualvm远程连接
通常我们的web服务都是部署在服务器上的,在window使用jconsole是很方便的,相对于Linux就有一些麻烦了,需要进行一些设置。1.查看hostname,首先使用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.启动服务,参数为:
java -jar -Djava.rmi.server.hostname=192.168.44.128 -ip为192.168.44.128,端口为911 。5.打开Jconsole,进行远程连接,输入IP和端口即可点击连接,经过稍稍等待之后,即可完成连接,如下图所示:同理,JvisualVm的远程连接是同样的,启动参数也是一样。然后在本机JvisualVm输入IP:PORT,即可进行远程连接:如下图所示:相比较Jvisualvm功能更加强大一下,界面也更美观~
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
推荐阅读
MYSQL 数据库时间字段 INT,TIMESTAMP,DATETIME 性能效率比较Java 中如何修改两个局部变量的值 ?Java 中的基本数据类型详解
如果这篇文章对你有帮助
请帮忙转发,点个在看
评论