Java-52 深入淺出 Tomcat SSL工作原理 性能優化 參數配置 JVM優化

點一下關注吧!!!非常感謝!!持續更新!!!

🚀 AI篇持續更新中!(長期更新)

目前2025年06月13日更新到:
AI煉丹日志-29 - 字節跳動 DeerFlow 深度研究框架 私有部署 測試上手 架構研究,持續打造實用AI工具指南!📐🤖

💻 Java篇正式開啟!(300篇)

目前2025年06月11日更新到:
Java-44 深入淺出 Nginx - 底層進程機制 Master Worker 機制原理 常用指令
MyBatis 已完結,Spring 已完結,深入淺出助你打牢基礎!

📊 大數據板塊已完成多項干貨更新(300篇):

包括 Hadoop、Hive、Kafka、Flink、ClickHouse、Elasticsearch 等二十余項核心組件,覆蓋離線+實時數倉全棧!
目前2025年06月13日更新到:
大數據-278 Spark MLib - 基礎介紹 機器學習算法 梯度提升樹 GBDT案例 詳解

請添加圖片描述

Tomcat 與 HTTPS 支持

HTTPS 是用來加強數據傳輸安全的,HTTP超文本傳輸協議,明文傳輸是非常不安全的,HTTPS在傳輸的過程中會對傳輸的數據進行加密。

SSL協議

基本介紹

TLS(Stransport Layer Security)協議
HTTP協議是互聯網應用最廣泛的數據傳輸協議之一,但HTTP本身不具備加密功能,傳輸的數據為明文,存在被竊聽、篡改、偽造的風險。

HTTPS協議則通過TLS(舊稱SSL)加密通道,提供:

  • 數據機密性(Confidentiality):確保數據在傳輸過程中不會被竊聽。
  • 數據完整性(Integrity):確保傳輸過程中數據不會被篡改或破壞。
  • 身份認證(Authentication):客戶端和服務端之間可進行身份驗證,確認通信雙方的真實性。

工作原理

HTTPS在HTTP基礎上,引入了一個TLS/SSL加密層。通信步驟如下:

  • 客戶端請求連接:客戶端向服務器發送HTTPS請求。
  • 服務器響應并發送證書:服務器返回一個包含其公鑰的數字證書。
  • 客戶端驗證證書:客戶端校驗數字證書是否合法。驗證證書上的域名是否與當前訪問域名匹配。
  • 協商加密方式并生成會話密鑰:客戶端生成隨機的對稱密鑰(Session Key),使用服務器證書中的公鑰加密后傳給服務器。服務器用自己的私鑰解密獲得會話密鑰。
  • 建立安全連接并傳輸數據:客戶端和服務器端使用會話密鑰進行數據加密和解密,實現安全通信。

術基礎

非對稱加密(公鑰加密)

  • 使用一對密鑰,分別是公開密鑰(Public Key)和私密密鑰(Private Key)。
  • 公鑰用于加密數據,私鑰用于解密數據,私鑰永遠只存儲在服務器端。

常用算法:

  • RSA(應用廣泛,但速度較慢)
  • ECC(橢圓曲線算法,效率更高)

對稱加密

  • HTTPS傳輸數據的主體使用對稱加密技術,即客戶端和服務器端擁有相同的密鑰用于加密和解密數據。

常用算法:

  • AES(高級加密標準)
  • ChaCha20(性能好,安全性高)

數字簽名與證書

數字證書一般由第三方權威機構(Certificate Authority,簡稱CA)頒發,包含以下內容:

  • 網站擁有者身份信息
  • 公鑰
  • 簽發機構的信息
  • 簽名和有效期

客戶端通過CA根證書確認服務器證書的真實性和有效性,從而信任通信的另一方。

TLS握手過程

TLS握手過程是建立HTTPS通信的關鍵步驟,其具體流程:

  • 客戶端發起連接,提出支持的TLS版本與密碼套件。
  • 服務器回應自己的證書、公鑰、選定的密碼套件。
  • 客戶端驗證證書有效性后,生成隨機密鑰,用服務器公鑰加密發送給服務器。
  • 服務器用私鑰解密出會話密鑰,完成握手。

優缺點

優點:

  • 數據傳輸安全,防止中間人攻擊(MITM)。
  • 保護用戶隱私與敏感數據。
  • 提升用戶對網站的信任感。
  • 符合現代瀏覽器與搜索引擎的要求。

缺點:

  • 部署成本較高(需要申請和更新證書)。
  • TLS握手階段會增加網絡延遲和服務器資源開銷。
  • 需要額外配置和維護證書有效性。

應用場景

  • 電子商務(支付類網站)
  • 銀行金融業務系統
  • 電子郵件傳輸(如Gmail)
  • 社交網絡、即時通訊服務
  • 各種Web應用、API接口服務

HTTPS與HTTP的主要區別

● HTTPS協議使用時需要到電子商務認證授權機構(CA)申請SSL證書
● HTTP默認端口是8080端口,HTTPS默認使用8443端口
● HTTPS則是具有SSL加密的安全性傳輸協議,對數據傳輸進行加密,效果上相當于HTTP的升級版本。
● HTTP的連接是無狀態的、不安全的,HTTPS是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比HTTP協議安全。

HTTPS工作原理

在這里插入圖片描述

Tomcat HTTPS

生成證書

首先我們需要生成免密的秘鑰證書

keytool -genkey -alias wzkicu -keyalg RSA -keystore wzkicu.keystore

對應的截圖如下所示:
在這里插入圖片描述
生成結束后,在當前目錄下有了keystore文件:
在這里插入圖片描述

配置XML

vim /opt/servers/apache-tomcat-9.0.98/conf/server.xml

當中的內容如下所示:
在這里插入圖片描述
我們需要修改,Connect的部分:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"maxThreads="150" schema="https" secure="true" SSLEnabled="true"><SSLHostConfig><Certificate
certificateKeystoreFile="/opt/wzk/wzkicu.keystore" certificateKeystorePassword="123123" type="RSA"
/></SSLHostConfig>
</Connector>

修改之后對應的內容如下所示:
在這里插入圖片描述

訪問網站

https://server:8443

執行結果如下圖所示(由于證書是自簽的,所以會提示不安全)
在這里插入圖片描述

Tomcat 性能優化

Tomcat的性能優化本質上是圍繞這些核心功能進行合理的參數調優,以提高吞吐量、降低延遲,最大程度地利用系統資源。

基本介紹

系統性能的衡量指標,主要是響應時間和吞吐量。
● 響應時間:執行某個操作的耗時
● 吞吐量:系統在給定時間內能夠支持的事務數量,單位TPS(Transaction PerSecond 的縮寫,也就是事務數/秒,一個事務是指一個客戶機向服務發送請求然后服務器做出反映的過程)

Tomcat優化主要從以下方面進行:
● JVM的虛擬機優化(優化內存模型)
● Tomcat自身配置的優化(比如是否使用了共享線程池?IO模型?)

Tomcat優化涉及的關鍵區域包括:

  • 連接器(Connector)優化
  • 線程池優化
  • JVM內存優化(堆、棧)
  • 垃圾回收(GC)優化
  • 緩存優化(靜態資源緩存、類加載器)

參數調整

Java虛擬機的運行優化主要是內存分配和垃圾回收策略的優化:
● 內存直接影響服務的運行效率和吞吐量
● 垃圾回收機制會不同程度的導致程序運行中斷(垃圾回收策略不同,垃圾回收次數和回收效率都是不同的)

連接器(Connector)

常用的示例:

<Connector port="8080"protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443"acceptCount="100"maxConnections="10000"maxThreads="200"minSpareThreads="10"enableLookups="false"compression="on"compressibleMimeType="text/html,text/xml,text/plain,text/javascript,text/css"/>
  • maxThreads:最大請求處理線程數,200~500,取決于系統資源
  • minSpareThreads:最小空閑線程數(始終準備好的線程數),10~50
  • acceptCount:等待隊列中允許的最大連接數,100~300
  • maxConnections:同時處理的最大連接數(包含等待連接),根據系統與并發需求設定
  • connectionTimeout:連接超時(毫秒),20000(20秒)左右
  • enableLookups:DNS反查開關,false(可提升速度)
  • compression:是否啟用GZIP壓縮,on
  • compressibleMimeType:允許壓縮的內容類型,文本類如text/html、text/css等

APR連接器優化

使用APR連接器(需安裝native庫)可大幅提升性能,尤其對于高并發和靜態資源較多的場景。
如果使用APR連接器(如protocol=“org.apache.coyote.http11.Http11AprProtocol”):

<Connector port="8080"protocol="org.apache.coyote.http11.Http11AprProtocol"connectionTimeout="20000"maxThreads="500"acceptCount="500"maxConnections="20000"enableLookups="false"keepAliveTimeout="15000"/>

Java虛擬機內存相關的參數

在Tomcat啟動腳本中優化JVM:

JAVA_OPTS="-server -Xms2G -Xmx2G -Xss512k \
-XX:+UseG1GC \
-XX:MaxGCPauseMillis=200 \
-XX:+HeapDumpOnOutOfMemoryError \
-Djava.awt.headless=true"

● server:啟動Server,以服務端模式運行(服務端模式建議開啟)
● Xms:最小堆內存(建議與Xmx設置相同)
● Xmx:最大堆內存(建議設置為可用內存80%)
● XX:MetaspaceSize:元空間初始值
● XX:MaxMetaspaceSize:元空間最大內存
● XX:NewRatio 年輕代和老年代大小比值,取值為整數,默認為2
● XX:SurvivorRatio Eden區與Survivor區大小的比值,取值為整數,默認為8

內存設置(Xms和Xmx)應根據機器物理內存與應用負載確定,一般兩者設定相同以減少GC頻繁調整。選擇合適的GC算法可有效減少垃圾回收暫停,提升應用響應性能。

Web應用參數優化

主要是 web.xml 的配置

<servlet><servlet-name>default</servlet-name><servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class><init-param><param-name>listings</param-name><param-value>false</param-value></init-param><init-param><param-name>readOnly</param-name><param-value>true</param-value></init-param>
</servlet>
  • listings:是否允許顯示目錄列表,false
  • readOnly:是否禁止Tomcat鎖定靜態文件,true

禁用listings可防止目錄暴露,提高安全性;readOnly開啟后Tomcat不會鎖定靜態文件,從而提升文件訪問性能。

其他優化

  • 連接池(如HikariCP):合理配置數據源連接池以減少連接頻繁創建銷毀的開銷;
  • 負載均衡:通過Nginx或Apache httpd等反向代理實現負載均衡和靜態資源處理;
  • 緩存技術:采用Redis、Memcached等緩存熱點數據;
  • 操作系統層面優化:如打開系統TCP快速回收、減少TIME_WAIT、優化文件句柄數。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/84686.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/84686.shtml
英文地址,請注明出處:http://en.pswp.cn/web/84686.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

day44-硬件學習之arm啟動代碼

一、跳轉指令實現函數調用 LR&#xff08;鏈接寄存器&#xff09;&#xff1a;保留函數返回地址 1.1 bl指令 跳轉指令bl,使LR保存當前函數進入前的下一條指令的地址&#xff0c;使函數調用后可以返回下一條指令的地址&#xff1b; 1.2 bx指令 跳到目標地址&#xff1b; 1.3 棧…

【數據結構】七種常見排序算法

&#x1f970;&#x1f970;&#x1f970;來都來了&#xff0c;不妨點個關注叭&#xff01; &#x1f449;博客主頁&#xff1a;歡迎各位大佬!&#x1f448; 歡迎來到排序算法的學習&#xff0c;恭喜你&#xff01;本期內容主要介紹排序算法&#xff0c;一起來探索吧~ &#xf…

Spring AOP 代理模式解析

一、核心概念&#xff1a;代理模式就像房屋中介 想象你要租一套房子&#xff1a; 你&#xff1a;租客&#xff08;業務調用者&#xff09;房東&#xff1a;房主&#xff08;真實業務對象&#xff09;中介&#xff1a;代理對象 傳統方式&#xff08;無代理&#xff09; 租客…

智能制造——案例解讀16頁制造業指標體系搭建指導【附全文閱讀】

文檔的主要內容可以總結如下&#xff1a; **文檔概述**&#xff1a; 本文檔詳細探討了企業為何需要指標體系、指標體系的定義、如何搭建指標體系、如何有效拆解和管理指標&#xff0c;并最后提供了制造業指標體系的參考。 **主要內容**&#xff1a; 1. **企業為什么需要指標體系…

Pandas 數據清洗

數據清洗是數據分析過程中至關重要的一環&#xff0c;也是初學者最容易忽視的步驟。本文將詳細介紹如何使用Pandas進行數據清洗&#xff0c;涵蓋空值處理、日期格式修正、錯誤數據識別和重復數據刪除四大核心內容。 1. Pandas 清洗空值 空值是數據集中最常見的問題之一&#…

C++容器之 forward_list (單向鏈表)使用說明

目錄 1. 語法格式 2. 說明 3. 用法示例 1. 語法格式 描述控制可變長度元素序列的對象。該序列存儲為單向(前向)鏈接的節點列表&#xff0c;每個節點包含一個 Type 類型的成員。 template <class Type, class Allocator allocator<Type>> class forward_lis…

ali 輕量服務器安裝nginx

# Ubuntu sudo apt install nginx-light # 精簡版 # CentOS sudo yum install nginx #啟動并設置開機自啟 sudo systemctl daemon-reload sudo systemctl start nginx sudo systemctl enable nginx #驗證安裝 nginx -v curl -I 127.0.0.1 #常用命令&#xff1a; # 重新加載配…

【設計模式】4.代理模式

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 代理模式 1. 第一版 class SchoolGirl:def __init__(self):self._name Nonepropertydef name(self):return self._namename.setterdef name(self, valu…

基于微信小程序的美食點餐訂餐系統

文章目錄 1. 項目概述2. 項目思維導圖3. 系統架構特點4. 核心模塊實現代碼1. 登錄注冊2. 首頁模塊實現4. 分類模塊實現5. 購物車模塊實現6. 訂單模塊實現 5. 注意事項6. 項目效果截圖7. 關于作者其它項目視頻教程介紹 1. 項目概述 在移動互聯網時代&#xff0c;餐飲行業數字化…

[neo4j]介紹4個開源的知識圖譜項目

項目主要介紹幾個開源項目&#xff1a; QASystemOnMedicalKG&#xff1a;醫療知識圖譜問答 https://github.com/liuhuanyong/QASystemOnMedicalKG Agriculture_KnowledgeGraph&#xff1a;農業知識圖譜 Financial-Knowledge-Graphs&#xff1a;小型金融知識圖譜 stock-know…

20倍光學鏡頭怎么實現20+20倍數實現

1. 硬件選擇 球機攝像頭 選擇40倍光學變焦的攝像頭 &#xff1a;確保攝像頭具有足夠的變焦能力&#xff0c;同時考慮攝像頭的分辨率、幀率、夜視功能等。 內置云臺 &#xff1a;許多高端攝像頭已經內置了云臺功能&#xff0c;如果是這樣&#xff0c;可以簡化機械設計和電機控制…

Axios 在 Vue3 項目中的使用:從安裝到組件中的使用

&#x1f90d; 前端開發工程師、技術日更博主、已過CET6 &#x1f368; 阿珊和她的貓_CSDN博客專家、23年度博客之星前端領域TOP1 &#x1f560; 牛客高級專題作者、打造專欄《前端面試必備》 、《2024面試高頻手撕題》、《前端求職突破計劃》 &#x1f35a; 藍橋云課簽約作者、…

【Python打卡Day50】預訓練模型與CBAM注意力@浙大疏錦行

現在我們思考下&#xff0c;是否可以對于預訓練模型增加模塊來優化其效果&#xff0c;這里我們會遇到一個問題: 預訓練模型的結構和權重是固定的&#xff0c;如果修改其中的模型結構&#xff0c;是否會大幅影響其性能。其次是訓練的時候如何訓練才可以更好的避免破壞原有的特征…

ONLYOFFICE Jira 集成應用程序 4.0.0 發布,含新的文件格式支持等多個重大更新!

ONLYOFFICE 與 Jira 集成的重大更新現已發布&#xff01;使用 ONLYOFFICE Docs 在 Jira Software 中處理各種辦公文檔&#xff0c;從 4.0.0 版本開始&#xff0c;ONLYOFFICE 連接器允許您編輯 PDF 文件和表單、直接從編輯器創建新文件、可視化用戶頭像、在 Jira 平臺內處理新文…

安裝區塊鏈相關Geth(基于CentOS7)

注&#xff1a;由于版本沖突問題&#xff0c;請嚴格按如下介紹版本進行安裝 安裝所需資料&#xff1a;通過網盤分享的文件&#xff1a;區塊鏈_CSDN 鏈接: https://pan.baidu.com/s/1dn5xcLtwwFy90xhOWKiWyA?pwdzgzs 提取碼: zgzs --來自百度網盤超級會員v6的分享 一、安裝運…

系統分析師——計算機系統基礎

系統分析師——計算機系統基礎 引言 作為系統分析師學習的第一節課&#xff0c;計算機系統基礎部分構建了整個知識體系的核心框架。本文將圍繞計算機系統的層次結構、硬件組成、軟件分類以及關鍵技術點進行詳細總結&#xff0c;為后續深入學習奠定基礎。 本節學習內容如下圖&…

JS常用設計模式匯總

1、基于類的單例模式 // PageManager.js class PageManager {constructor(config) {if (!PageManager.instance) {this.config config;this.initialized false;PageManager.instance this;this.init();}return PageManager.instance;}init() {if (this.initialized) return…

邁向軟件開發 T 型人才之路:構建多元能力體系

在軟件開發的廣袤天地里&#xff0c;T 型人才備受矚目。這類人才猶如具備強大能量的 “多面手”&#xff0c;既有深入專精的技術能力&#xff0c;又有廣泛多元的知識與技能儲備&#xff0c;能夠從容應對復雜多變的項目需求&#xff0c;引領行業創新發展。于當今社會而言&#x…

SALMONN-omni論文閱讀

論文鏈接 項目鏈接 名詞理解&#xff1a; backchanneling&#xff1a; 指的是聽話人在不打斷說話人的情況下&#xff0c;用簡短的語氣詞或動作表示“我在聽”“我理解了”的反饋。 常見示例包括&#xff1a; “嗯哼”&#xff08;“uh-huh”&#xff09; “對的”&#xff08…

區塊鏈:什么是DeFi?

DeFi&#xff08;去中心化金融&#xff0c;Decentralized Finance&#xff09; 是一種基于區塊鏈技術的金融生態系統&#xff0c;旨在通過去中心化的方式提供傳統金融服務&#xff08;如借貸、交易、儲蓄等&#xff09;&#xff0c;無需依賴銀行、經紀商等中介機構。DeFi主要構…