介绍
在SpringBoot的Web项目中,默认采用的是内置Tomcat,当然也可以配置支持内置的jetty,内置有什么好处呢?
1. 方便微服务部署。
2. 方便项目启动,不需要下载Tomcat或者Jetty
针对目前的容器优化,目前来说没有太多地方,需要考虑如下几个点
线程数
超时时间
jvm优化
针对上述的优化点来说,首先线程数是一个重点,初始线程数和最大线程数,初始线程数保障启动的时候,如果有大量用户访问,能够很稳定的接受请求,
而最大线程数量用来保证系统的稳定性,而超时时间用来保障连接数不容易被压垮,如果大批量的请求过来,延迟比较高,不容易把线程打满。这种情况在生产中是比较常见的
一旦网络不稳定,宁愿丢包也不愿意把机器压垮。
jvm优化一般来说没有太多场景,无非就是加大初始的堆,和最大限制堆,当然也不是无限增大,根据的情况进快速开始
在spring boot配置文件中application.yml(properties类似),添加以下配置
server: tomcat: min-spare-threads: 20 max-threads: 100 connection-timeout: 5000
这块对tomcat进行了一个优化配置,最大线程数是100,初始化线程是20,超时时间是5000ms
也可以通过java -Dserver.tomcat.xxx=xx 等等 来进行启动配置
Jvm优化
这块主要不是谈如何优化,jvm优化是一个需要场景化的,没有什么太多特定参数,一般来说在server端运行都会指定如下参数
初始内存和最大内存基本会设置成一样的,具体大小根据场景设置,-server是一个必须要用的参数,
至于收集器这些使用默认的就可以了,除非有特定需求
1.使用-server模式
设置JVM使用server模式。64位JDK默认启动该模式
java -server -jar forum_84_version_0.1.jar
2.指定堆参数
这个根据服务器的内存大小,项目起初本地JMX监控的内存,来设置堆参数。
-Xms :设置Java堆栈的初始化大小
-Xmx :设置最大的java堆大小
java -server -Xms256m -Xmx512m -jar forum_84_version_0.1.jar
设置初始化堆内存为256MB,最大为512MB。
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”,修改为:“10.0.0.3 localhost.localdomain localhost”.“10.0.0.3”为实际的服务器的IP地
3.重启Linux,在服务器上输入hostname -i,查看实际设置的IP地址是否为你设置的
4.启动服务,参数为:
java \ -server -Xms256m -Xmx512m \ -Djava.rmi.server.hostname=10.0.0.3 \ -Dcom.sun.management.jmxremote=true \ -Dcom.sun.management.jmxremote.port=11080 \ -Dcom.sun.management.jmxremote.ssl=false \ -Dcom.sun.management.jmxremote.authenticate=false \ -jar forum_84_version_0.1.jar
ip为10.0.0.3,端口为11080。
5.打开Jconsole,进行远程连接,输入IP和端口即可
点击连接,经过稍稍等待之后,即可完成连接,如下图所示:
同理,JvisualVm的远程连接是同样的,启动参数也是一样.
然后在本机JvisualVm输入IP:PORT,即可进行远程连接:这里不再做展示;