第 1 节 Tomcat 对 HTTPS 的⽀持
Https
是⽤来加强数据传输安全的
1.1 HTTPS
简介
Http
超⽂本传输协议,明⽂传输 ,传输不安全,
https
在传输数据的时候会对数据进⾏加密ssl
协议
TLS(transport layer security)
协议
HTTPS
和
HTTP
的主要区别
HTTPS
协议使⽤时需要到电⼦商务认证授权机构(
CA
)申请
SSL
证书
HTTP
默认使⽤
8080
端⼝,
HTTPS
默认使⽤
8443
端⼝
HTTPS
则是具有
SSL
加密的安全性传输协议,对数据的传输进⾏加密,效果上相当于
HTTP
的升级
版
HTTP
的连接是⽆状态的,不安全的;
HTTPS
协议是由
SSL+HTTP
协议构建的可进⾏加密传输、身
份认证的⽹络协议,⽐
HTTP
协议安全
HTTPS
⼯作原理
1.2 Tomcat
对
HTTPS
的⽀持
1
) 使⽤
JDK
中的
keytool
⼯具⽣成免费的秘钥库⽂件
(
证书
)
keytool -genkey -alias lagou -keyalg RSA -keystore lagou.keystore
2
) 配置
conf/server.xml
<Connector port = "8443" protocol = "org.apache.coyote.http11.Http11NioProtocol"maxThreads = "150" schema = "https" secure = "true" SSLEnabled = "true" ><SSLHostConfig><CertificatecertificateKeystoreFile = "/Users/yingdian/workspace/servers/apache-tomcat-8.5.50/conf/lagou.keystore" certificateKeystorePassword = "lagou123" type = "RSA"/></SSLHostConfig></Connector>
4
)使⽤
https
协议访问
8443
端⼝(
https://localhost:8443
)
第 2 节 Tomcat 性能优化策略
系统性能的衡量指标,主要是响应时间和吞吐量。
1
)响应时间:执⾏某个操作的耗时;
2)
吞吐量:系统在给定时间内能够⽀持的事务数量,单位为
TPS
(
Transactions PerSecond
的缩写,也就是事务数
/
秒,⼀个事务是指⼀个客户机向服务器发送请求然后服务器做出反应的过程。
Tomcat
优化从两个⽅⾯进⾏
1
)
JVM
虚拟机优化(优化内存模型)
2
)
Tomcat
⾃身配置的优化(⽐如是否使⽤了共享线程池?
IO
模型?)
学习优化的原则
提供给⼤家优化思路,没有说有明确的参数值⼤家直接去使⽤,必须根据⾃⼰的真实⽣产环境来进⾏调整,调优是⼀个过程
2.1
虚拟机运⾏优化(参数调整)
Java
虚拟机的运⾏优化主要是内存分配和垃圾回收策略的优化:
内存直接影响服务的运⾏效率和吞吐量
垃圾回收机制会不同程度地导致程序运⾏中断(垃圾回收策略不同,垃圾回收次数和回收效率都是
不同的)
1
)
Java
虚拟机内存相关参数
JVM
内存模型回顾
参数调整示例
JAVA_OPTS = "-server -Xms2048m -Xmx2048m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m"
调整后查看可使⽤
JDK
提供的内存映射⼯具
2
) 垃圾回收(
GC
)策略
垃圾回收性能指标
吞吐量:⼯作时间(排除
GC
时间)占总时间的百分⽐, ⼯作时间并不仅是程序运⾏的时间,还包
含内存分配时间。
暂停时间:由垃圾回收导致的应⽤程序停⽌响应次数
/
时间。
垃圾收集器
串⾏收集器(
Serial Collector
)
单线程执⾏所有的垃圾回收⼯作, 适⽤于单核
CPU
服务器
⼯作进程
-----|
(单线程)垃圾回收线程进⾏垃圾收集
|---
⼯作进程继续
并⾏收集器(
Parallel Collector
)
⼯作进程
-----|
(多线程)垃圾回收线程进⾏垃圾收集
|---
⼯作进程继续
⼜称为吞吐量收集器(关注吞吐量), 以并⾏的⽅式执⾏年轻代的垃圾回收, 该⽅式可以显著降
低垃圾回收的开销
(
指多条垃圾收集线程并⾏⼯作,但此时⽤户线程仍然处于等待状态
)
。适⽤于多
处理器或多线程硬件上运⾏的数据量较⼤的应⽤
并发收集器(
Concurrent Collector
)
以并发的⽅式执⾏⼤部分垃圾回收⼯作,以缩短垃圾回收的暂停时间。适⽤于那些响应时间优先于
吞吐量的应⽤, 因为该收集器虽然最⼩化了暂停时间
(
指⽤户线程与垃圾收集线程同时执⾏
,
但不⼀
定是并⾏的,可能会交替进⾏
)
, 但是会降低应⽤程序的性能
CMS
收集器(
Concurrent Mark Sweep Collector
)
并发标记清除收集器, 适⽤于那些更愿意缩短垃圾回收暂停时间并且负担的起与垃圾回收共享处
理器资源的应⽤
G1
收集器(
Garbage-First Garbage Collector
)
适⽤于⼤容量内存的多核服务器, 可以在满⾜垃圾回收暂停时间⽬标的同时, 以最⼤可能性实现
⾼吞吐量
(JDK1.7
之后)
在
bin/catalina.sh
的脚本中
,
追加如下配置
:
JAVA_OPTS = "-XX:+UseConcMarkSweepGC"
2.2 Tomcat
配置调优
Tomcat
⾃身相关的调优
调整
tomcat
线程池
调整
tomcat
的连接器
调整
tomcat/conf/server.xml
中关于链接器的配置可以提升应⽤服务器的性能。