1.介绍

在SpringBoot的Web项目中,默认采用的是内置Tomcat,当然也可以配置支持内置的jetty,内置有什么好处呢?
1. 方便微服务部署。
2. 方便项目启动,不需要下载Tomcat或者Jetty
在目前的公司已经把内置的Jetty部署到了线上项目中,目前来说并无太大问题,内置就算有一些性能损失,但是通过部署多台机器,
其实也能够很轻松的解决这样的问题,内置容器之后其实是方便部署和迁移的。
1.1 优化策略
针对目前的容器优化,目前来说没有太多地方,需要考虑如下几个点
针对上述的优化点来说,首先线程数是一个重点,初始线程数和最大线程数,初始线程数保障启动的时候,如果有大量用户访问,能够很稳定的接受请求, 而最大线程数量用来保证系统的稳定性,而超时时间用来保障连接数不容易被压垮,如果大批量的请求过来,延迟比较高,不容易把线程打满。这种情况在生产中是比较常见的
一旦网络不稳定,宁愿丢包也不愿意把机器压垮。
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的步骤问题
# 是一个
# 这块
# 线上
# 都是
# 没有太多
# 不容易
# 云和
# 进行了
# 的是
# 几个
# 也不
# 太多
# 最好的
# 上了
# 不太
# 不需要
# 腾讯
# 较高
# 没有什么
# 太大
相关文章:
如何在建站之星网店版论坛获取技术支持?
建站之星导航如何优化提升用户体验?
家具网站制作软件,家具厂怎么跑业务?
电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?
如何在新浪SAE免费搭建个人博客?
建站DNS解析失败?如何正确配置域名服务器?
php json中文编码为null的解决办法
深圳网站制作平台,深圳市做网站好的公司有哪些?
定制建站流程解析:需求评估与SEO优化功能开发指南
宝塔新建站点为何无法访问?如何排查?
如何快速生成专业多端适配建站电话?
如何在Windows 2008云服务器安全搭建网站?
如何优化Golang Web性能_Golang HTTP服务器性能提升方法
如何通过远程VPS快速搭建个人网站?
潮流网站制作头像软件下载,适合母子的网名有哪些?
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
家庭服务器如何搭建个人网站?
定制建站是什么?如何实现个性化需求?
西安专业网站制作公司有哪些,陕西省建行官方网站?
在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?
如何在Tomcat中配置并部署网站项目?
简易网站制作视频教程,使用记事本编写一个简单的网页html文件?
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
如何在宝塔面板创建新站点?
如何快速打造个性化非模板自助建站?
如何在阿里云完成域名注册与建站?
如何在七牛云存储上搭建网站并设置自定义域名?
建站之星多图banner生成与模板自定义指南
如何自定义建站之星网站的导航菜单样式?
网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?
南京网站制作费用,南京远驱官方网站?
相册网站制作软件,图片上的网址怎么复制?
网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?
浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?
新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?
网站制作网站,深圳做网站哪家比较好?
建站之星CMS五站合一模板配置与SEO优化指南
招商网站制作流程,网站招商广告语?
如何用PHP快速搭建CMS系统?
零基础网站服务器架设实战:轻量应用与域名解析配置指南
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
网站制作的步骤包括,正确网址格式怎么写?
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
测试制作网站有哪些,测试性取向的权威测试或者网站?
如何快速生成ASP一键建站模板并优化安全性?
网站微信制作软件,如何制作微信链接?
定制建站策划方案_专业建站与网站建设方案一站式指南
湖州网站制作公司有哪些,浙江中蓝新能源公司官网?
如何通过cPanel快速搭建网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。