全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解SpringBoot初始教程之Tomcat、Https配置以及Jetty优化

1.介绍

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

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

在目前的公司已经把内置的Jetty部署到了线上项目中,目前来说并无太大问题,内置就算有一些性能损失,但是通过部署多台机器,

其实也能够很轻松的解决这样的问题,内置容器之后其实是方便部署和迁移的。

1.1 优化策略

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

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

针对上述的优化点来说,首先线程数是一个重点,初始线程数和最大线程数,初始线程数保障启动的时候,如果有大量用户访问,能够很稳定的接受请求, 而最大线程数量用来保证系统的稳定性,而超时时间用来保障连接数不容易被压垮,如果大批量的请求过来,延迟比较高,不容易把线程打满。这种情况在生产中是比较常见的

一旦网络不稳定,宁愿丢包也不愿意把机器压垮。

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

2. 快速开始

3.1 Tomcat SSL

tomcat的SSL配置很简单,先通过JDK的方式生成.keystore,这种方式的证书一般来说不太被认可的,最好的方式去网上申请,阿里云和腾讯云都可以免费申请, 这种方式配置出来的https,google浏览器会提示https不受认证

keytool -genkey -alias tomcat -keyalg RSA

application-tomcat.yaml

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

 server:
  tomcat:
  max-threads: 100
  min-spare-threads: 20
  connection-timeout: 5000
  ssl:
  key-store: classpath:.keystore
  key-store-type: JKS
  key-password: qq123456
  key-alias: tomcat
  port: 8443

启动类

启动类这块加上了一个httpConnector,为了支持https访问和http访问

 @SpringBootApplication
 public class AppApplication {
  public static void main(String args[]) {
   SpringApplication.run(AppApplication.class, args);
  }

  @Bean
  public EmbeddedServletContainerFactory tomcatEmbeddedServletContainerFactory() throws IOException {
   TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();
   tomcat.addAdditionalTomcatConnectors(httpConnector());
   return tomcat;
  }

  public Connector httpConnector() throws IOException {
   Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
   Http11NioProtocol http11NioProtocol = (Http11NioProtocol) connector.getProtocolHandler();
   connector.setPort(8080);
   //设置最大线程数
   http11NioProtocol.setMaxThreads(100);
   //设置初始线程数 最小空闲线程数
   http11NioProtocol.setMinSpareThreads(20);
   //设置超时
   http11NioProtocol.setConnectionTimeout(5000);
   return connector;
  }

 }

上述就完成了https的配置,如果启动成功可以发现tomcat启动时候监听了两个端口

2016-11-21 10:53:15.247 INFO 42382 --- [   main] com.start.AppApplication     : Starting AppApplication on elemebjdeMacBook-Pro.local with PID 42382 (/Users/wangkang/code/SpringBoot-Learn/springboot-9/target/classes started by wangkang in /Users/wangkang/code/SpringBoot-Learn)
2016-11-21 10:53:15.251 INFO 42382 --- [   main] com.start.AppApplication     : No active profile set, falling back to default profiles: default
2016-11-21 10:53:15.426 INFO 42382 --- [   main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@489115ef: startup date [Mon Nov 21 10:53:15 CST 2016]; root of context hierarchy
2016-11-21 10:53:19.164 INFO 42382 --- [   main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8443 (https) 8080 (http)
2016-11-21 10:53:19.193 INFO 42382 --- [   main] o.apache.catalina.core.StandardService : Starting service Tomcat
2016-11-21 10:53:19.194 INFO 42382 --- [   main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.5

3.2 jvm优化

这块主要不是谈如何优化,jvm优化是一个需要场景化的,没有什么太多特定参数,一般来说在server端运行都会指定如下参数
初始内存和最大内存基本会设置成一样的,具体大小根据场景设置,我们线上环境一般都是4G,因为机器是16G的,-server是一个必须要用的参数, 至于收集器这些使用默认的就可以了,除非有特定需求

java -Xms4g -Xmx4g -Xmn768m -server -jar springboot-9-1.4.1.RELEASE.jar

4 jetty配置

pom.xml

springboot增加了一个starter针对jetty的,给pom增加一个依赖即可

  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-jetty</artifactId>
  </dependency>

下面是针对jetty的线程优化,进行了一个配置,当然不配置也是可以使用的,在线上环境中最好配置一下,进行优化

@Profile("jetty")
  @Bean
  public JettyEmbeddedServletContainerFactory jettyEmbeddedServletContainerFactory(
    JettyServerCustomizer jettyServerCustomizer) {
   JettyEmbeddedServletContainerFactory factory = new JettyEmbeddedServletContainerFactory();
   factory.addServerCustomizers(jettyServerCustomizer);
   return factory;
  }


  @Bean
  public JettyServerCustomizer jettyServerCustomizer() {
   return server -> {
    // Tweak the connection config used by Jetty to handle incoming HTTP
    // connections
    final QueuedThreadPool threadPool = server.getBean(QueuedThreadPool.class);
    threadPool.setMaxThreads(100);
    threadPool.setMinThreads(20);
   };
  }

4.1 jetty https配置

application-jetty.yaml

https配置和tomcat的没有太多差别,这块是统一配置,SpringBoot做了一个抽象化而已

server:
 connection-timeout: 5000
 ssl:
 key-store: classpath:.keystore
 key-store-type: JKS
 key-password: qq123456
 key-alias: tomcat
 port: 8444

3 总结

一般来说在生产环境中不会用tomcat配置https,因为在我们的生产环境中,tomcat是一个统一的模板,只能够改线程数。一般的做法都是通过

nginx配置https,配置方式也比较简单,而且也方便重启

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# SpringBoot  # Tomcat配置  # Https配置  # Jetty优化  # SpringBoot集成Tomcat服务架构配置  # SpringBoot配置和切换Tomcat流程详解  # idea使用外置tomcat配置springboot详细步骤  # SpringBoot如何实现Tomcat自动配置  # Springboot内置tomcat配置虚拟路径过程解析  # 配置springboot项目使用外部tomcat过程解析  # springboot省去配置Tomcat的步骤问题  # 是一个  # 这块  # 线上  # 都是  # 没有太多  # 不容易  # 云和  # 进行了  # 的是  # 几个  # 也不  # 太多  # 最好的  # 上了  # 不太  # 不需要  # 腾讯  # 较高  # 没有什么  # 太大 


相关文章: 网站制作网站,深圳做网站哪家比较好?  建站之星安装路径如何正确选择及配置?  广州建站公司哪家好?十大优质服务商推荐  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  如何用已有域名快速搭建网站?  如何在IIS7上新建站点并设置安全权限?  建站主机默认首页配置指南:核心功能与访问路径优化  如何在腾讯云服务器快速搭建个人网站?  如何快速使用云服务器搭建个人网站?  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  建站之星如何优化SEO以实现高效排名?  建站之星伪静态规则如何正确配置?  建站上市公司网站建设方案与SEO优化服务定制指南  贸易公司网站制作流程,出口贸易网站设计怎么做?  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  ,南京靠谱的征婚网站?  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  如何用腾讯建站主机快速创建免费网站?  建站主机选哪种环境更利于SEO优化?  网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?  如何彻底删除建站之星生成的Banner?  ,制作一个手机app网站要多少钱?  定制建站流程步骤详解:一站式方案设计与开发指南  h5网站制作工具有哪些,h5页面制作工具有哪些?  在线制作视频网站免费,都有哪些好的动漫网站?  潮流网站制作头像软件下载,适合母子的网名有哪些?  如何做静态网页,sublimetext3.0制作静态网页?  如何快速登录WAP自助建站平台?  大学网站设计制作软件有哪些,如何将网站制作成自己app?  如何通过.red域名打造高辨识度品牌网站?  企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?  宝塔建站无法访问?如何排查配置与端口问题?  建站主机系统SEO优化与智能配置核心关键词操作指南  怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?  想学网站制作怎么学,建立一个网站要花费多少?  如何通过虚拟主机快速完成网站搭建?  如何在VPS电脑上快速搭建网站?  高性能网站服务器配置指南:安全稳定与高效建站核心方案  如何配置WinSCP新建站点的密钥验证步骤?  Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递  建站主机无法访问?如何排查域名与服务器问题  如何快速启动建站代理加盟业务?  宝盒自助建站智能生成技巧:SEO优化与关键词设置指南  唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?  南宁网站建设制作定制,南宁网站建设可以定制吗?  5种Android数据存储方式汇总  ,石家庄四十八中学官网?  制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?  如何在建站之星绑定自定义域名?  专业网站制作服务公司,有哪些网站可以免费发布招聘信息? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。