Spring Boot 这样的优化,让你的项目飞起来
介绍
在 SpringBoot 的 Web 项目中,默认采用的是内置 Tomcat,当然也可以配置支持内置的 jetty,内置有什么好处呢?
方便微服务部署。
方便项目启动,不需要下载 Tomcat 或者 Jetty
针对目前的容器优化,目前来说没有太多地方,需要考虑如下几个点
线程数
超时时间
jvm 优化
针对上述的优化点来说,首先线程数是一个重点,初始线程数和最大线程数,初始线程数保障启动的时候,如果有大量用户访问,能够很稳定的接受请求。
而最大线程数量用来保证系统的稳定性,而超时时间用来保障连接数不容易被压垮,如果大批量地请求过来,延迟比较高,不容易把线程打满。这种情况在生产中是比较常见的 ,一旦网络不稳定,宁愿丢包也不愿意把机器压垮。
jvm 优化一般来说没有太多场景,无非就是加大初始的堆,和最大限制堆,当然也不是无限增大,根据的情况进快速开始
在 spring boot 配置文件中 application.yml,添加以下配置
这块对 tomcat 进行了一个优化配置,最大线程数是 100,初始化线程是 20,超时时间是 5000ms
Jvm 优化
这块主要不是谈如何优化,jvm 优化是一个需要场景化的,没有什么太多特定参数,一般来说在 server 端运行都会指定如下参数
初始内存和最大内存基本会设置成一样的,具体大小根据场景设置,-server 是一个必须要用的参数,至于收集器这些使用默认的就可以了,除非有特定需求。
1.使用-server 模式
设置 JVM 使用 server 模式。64 位 JDK 默认启动该模式
2.指定堆参数
这个根据服务器的内存大小,来设置堆参数。
-Xms :设置 Java 堆栈的初始化大小
-Xmx :设置最大的 java 堆大小
设置初始化堆内存为 512MB,最大为 768MB。
3.远程 Debug
在服务器上将启动参数修改为:
这个时候服务端远程 Debug 模式开启,端口号为 8888。
在 IDEA 中,点击 Edit Configuration 按钮。
出现弹窗,点击+按钮,找到 Remote 选项。
在【1】中填入 Remote 项目名称,在【2】中填 IP 地址和端口号,在【3】选择远程调试的项目 module,配置完成后点击 OK 即可
如果碰到连接超时的情况,很有可能服务器的防火墙的问题,举例 CentOs7,关闭防火墙
点击 debug 按钮,IDEA 控制台打印信息:
说明远程调试成功。
JVM 工具远程连接
jconsole 与 Jvisualvm 远程连接
通常我们的 web 服务都是部署在服务器上的,在 window 使用 jconsole 是很方便的,相对于 Linux 就有一些麻烦了,需要进行一些设置。
1.查看 hostname,首先使用
查看,服务器的 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.启动服务,参数为:
ip 为 192.168.44.128,端口为 911 。
5.打开 Jconsole,进行远程连接,输入 IP 和端口即可
点击连接,经过稍稍等待之后,即可完成连接,如下图所示:
同理,JvisualVm 的远程连接是同样的,启动参数也是一样。
然后在本机 JvisualVm 输入 IP:PORT,即可进行远程连接:如下图所示:
相比较 Jvisualvm 功能更加强大一下,界面也更美观。
评论