tocmat 啟動怎么設置 jvm和gc

在生產環境中部署 Java Web 應用時,我們經常需要給 Tomcat 設置 JVM 參數和 GC 策略,以提高性能、穩定性和可觀察性。以下是完整教程:


一、Tomcat 設置 JVM 啟動參數的方式

1. 修改 startup 腳本(推薦)

Linux 系統下的 Tomcat 9 為例,修改 bin/catalina.sh 腳本:

在文件頭部(JAVA_OPTS 或新定義)添加:

# JVM 參數配置
JAVA_OPTS="$JAVA_OPTS -Xms2g -Xmx2g -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m"# GC 策略(根據 JDK 版本選擇)
JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:MaxGCPauseMillis=100"# 日志 & 可觀測性(可選)
JAVA_OPTS="$JAVA_OPTS -Xloggc:/var/log/tomcat/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps"

然后運行 bin/startup.sh 即可生效。


2. 設置 setenv.sh(推薦方式)

在 Tomcat 的 bin 目錄下新建一個文件 setenv.sh(Windows 為 setenv.bat):

#!/bin/bash# JVM 啟動參數(可以換成你自己的配置)
JAVA_OPTS="-Xms2g -Xmx2g -Xmn512m -XX:+UseG1GC -XX:MaxGCPauseMillis=100"
JAVA_OPTS="$JAVA_OPTS -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m"
JAVA_OPTS="$JAVA_OPTS -Xloggc:/var/log/tomcat/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps"

注意:

  • setenv.shcatalina.sh 自動讀取,推薦用這個文件管理配置。
  • setenv.sh 的權限必須為可執行:chmod +x setenv.sh

二、根據 JDK 版本選擇 GC 策略

JDK版本默認 GC推薦 GC(手動指定)
JDK8Parallel GCG1GC:-XX:+UseG1GC
JDK11G1GCG1GC 或 ZGC(實驗性)
JDK17G1GCZGC(低延遲場景)

示例:

# JDK8 推薦參數(G1)
JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:MaxGCPauseMillis=100"# JDK17 啟用 ZGC(超低延遲業務)
JAVA_OPTS="$JAVA_OPTS -XX:+UnlockExperimentalVMOptions -XX:+UseZGC"

三、常見 JVM 參數說明

參數含義
-Xms2g / -Xmx2g初始/最大堆大小
-Xmn512m年輕代大小
-XX:+UseG1GC使用 G1 垃圾回收器
-XX:MaxGCPauseMillis=100G1 最大停頓時間目標(毫秒)
-XX:MetaspaceSize=128m元空間初始大小
-XX:MaxMetaspaceSize=256m元空間最大大小
-Xloggc:gc.logGC 日志路徑
-XX:+PrintGCDetails打印 GC 詳情
-XX:+PrintGCDateStamps打印 GC 時間戳

四、檢查是否生效

ps -ef | grep tomcat

查看啟動命令中是否包含你配置的 -Xmx, -XX:+UseG1GC 等。

或者在 Tomcat 管理臺訪問 /manager 界面,查看 JVM 狀態。


五、建議

  • 堆大小設置不要超過服務器物理內存的 60~70%
  • GC 日志建議開啟,并定期分析
  • 使用 jstat, jmap, jvisualvm, Arthas 等工具動態監控
  • 建議業務高峰期進行壓測和 GC 調優驗證

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

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

相關文章

zuoyyyeee

實驗拓撲圖 需求分析 1.分配接口ip 2.使用OSPF協議使三臺路由器可達 3.在路由器1,2 /4,5 使用直連接口直接配置EBGP ip配置: [R1]: bgp 100 rid 1.1.1.1 peer 12.0.0.2 as-number 200 network 1.1.1.1 32 [R2]: bgp 200 rid 2.2.2.2 p…

?Element UI 雙擊事件(@cell-dblclick 與 @row-dblclick)

?Element UI 雙擊事件(cell-dblclick 與 row-dblclick) 一、核心雙擊事件綁定? 表格單元格雙擊? ?事件綁定?: 通過 cell-dblclick 監聽單元格雙擊,接收四個參數(row, column, cell, event)。 ?示…

Python爬蟲實戰:研究decrypt()方法解密

1. 引言 1.1 研究背景與意義 在當今數字化時代,網絡數據蘊含著巨大的價值。然而,許多網站為了保護其數據安全和商業利益,會采用各種加密手段對傳輸的數據進行處理。這些加密措施給數據采集工作帶來了巨大挑戰。網絡爬蟲逆向解密技術應運而生,它通過分析和破解網站的加密機…

day014-服務管理

文章目錄 1. 提問的方式1.1 注意事項1.2 start法則-提問/面試 2. systemctl 系統服務管理2.1 開啟和自啟動服務sshd2.2 關閉和永久禁用防火墻2.3 查看服務的狀態2.4 重啟服務2.5 sshd重啟失敗案例 3. localectl 字符集管理3.1 臨時修改語言3.2 永久修改語言3.3 用腳本修改語言 …

【redis】CacheAside的數據不一致性問題

緩存的合理使用確提升了系統的吞吐量和穩定性,然而這是有代價的,這個代價便是緩存和數據庫的一致性帶來了挑戰。 新增數據時,數據直接寫入數據庫,緩存中不存在對應記錄。首次查詢請求會觸發緩存回填,即從數據庫讀取新…

DA14585墨水屏學習

一、do_min_word void do_min_work(void) {timer_used_min app_easy_timer(APP_PERIPHERAL_CTRL_TIMER_DELAY_MINUTES, do_min_work);current_unix_time time_offset;time_offset 60;// if (isconnected 1)// {// GPIO_SetActive(GPIO_LED_PORT, GPIO_LED_PIN);// …

微服務調試問題總結

本地環境調試。 啟動本地微服務,使用公共nacos配置。利用如apifox進行本地代碼調試解決調試問題。除必要的業務微服務依賴包需要下載到本地。使用mvn clean install -DskipTests進行安裝啟動前選擇好profile環境進行啟動,啟動前記得mvn clean清理項目。…

C#學習第22天:網絡編程

網絡編程的核心概念 1. 套接字(Sockets) 定義:套接字是網絡通信的基本單元,提供了在網絡中進行數據交換的端點。用途:用于TCP/UDP網絡通信,支持低級別的網絡數據傳輸。 2.協議 TCP(Transmiss…

TWASandGWAS中GBS filtering and GWAS(1)

F:\文章代碼\TWASandGWAS\GBS filtering and GWAS README.TXT 請檢查幻燈片“Vitamaize_update_Gorelab_Ames_GBS_filtering_20191122.pptx”中關于阿姆斯(Ames)ID處理流程的詳細信息。 文件夾“Ames_ID_processing”包含了用于處理阿姆斯ID的文件和R…

圖像處理篇---opencv實現坐姿檢測

文章目錄 前言一、方法概述使用OpenCV和MediaPipe關鍵點檢測角度計算姿態評估 二、完整代碼實現三、代碼說明PostureDetector類find_pose()get_landmarks()cakculate_angle()evaluate_posture() 坐姿評估標準(可進行參數調整):可視化功能&…

.Net HttpClient 使用代理功能

HttpClient 使用代理功能 實際開發中,HttpClient 通過代理訪問目標服務器是常見的需求。 本文將全面介紹如何在 .NET 中配置 HttpClient 使用代理(Proxy)功能,包括基礎使用方式、代碼示例、以及與依賴注入結合的最佳實踐。 注意…

【學習路線】 游戲客戶端開發入門到進階

目錄 游戲客戶端開發入門到進階:系統學習路線與推薦書單一、學習總原則:從底層出發,項目驅動,持續迭代二、推薦學習路線圖(初學者→進階)第一階段:語言基礎與編程思維第二階段:游戲開…

精益數據分析(57/126):創業移情階段的核心要點與實踐方法

精益數據分析(57/126):創業移情階段的核心要點與實踐方法 在創業的浩瀚征程中,每一個階段都承載著獨特的使命與挑戰。今天,我們繼續秉持共同進步的理念,深入研讀《精益數據分析》,聚焦創業的首…

015枚舉之滑動窗口——算法備賽

滑動窗口 最大子數組和 題目描述 給你一個整數數組 nums &#xff0c;請你找出一個具有最大和的連續子數組&#xff08;子數組最少包含一個元素&#xff09;&#xff0c;返回其最大和。 原題鏈接 思路分析 見代碼注解 代碼 int maxSubArray(vector<int>& num…

微軟系統 紅帽系統 網絡故障排查:ping、traceroute、netstat

在微軟&#xff08;Windows&#xff09;和紅帽&#xff08;Red Hat Enterprise Linux&#xff0c;RHEL&#xff09;等系統中&#xff0c;網絡故障排查是確保系統正常運行的重要環節。 ping、traceroute&#xff08;在Windows中為tracert&#xff09;和netstat是三個常用的網絡…

解構認知邊界:論萬能方法的本體論批判與方法論重構——基于跨學科視閾的哲學-科學辯證

一、哲學維度的本體論批判 &#xff08;1&#xff09;理性主義的坍縮&#xff1a;從笛卡爾幻想到哥德爾陷阱 笛卡爾在《方法論》中構建的理性主義范式&#xff0c;企圖通過"普遍懷疑-數學演繹"雙重機制確立絕對方法體系。然而哥德爾不完備定理&#xff08;Gdel, 19…

【網絡入侵檢測】基于源碼分析Suricata的IP分片重組

【作者主頁】只道當時是尋常 【專欄介紹】Suricata入侵檢測。專注網絡、主機安全&#xff0c;歡迎關注與評論。 目錄 目錄 1.概要 2. 配置信息 2.1 名詞介紹 2.2 defrag 配置 3. 代碼實現 3.1 配置解析 3.1.1 defrag配置 3.1.2 主機系統策略 3.2 分片重組模塊 3.2.1…

二分查找的邊界問題

前言 二分查找(Binary Search)是一種高效的查找算法&#xff0c;時間復雜度為O(log n)。它適用于已排序的數組或列表。本文將詳細介紹二分查找的兩種常見寫法&#xff1a;閉區間寫法和左閉右開區間寫法。 一、二分查找基本思想 二分查找的核心思想是"分而治之"&am…

重慶醫科大學附屬第二醫院外科樓外擋墻自動化監測

1.項目概述 重慶醫科大學附屬第二醫院&#xff0c;重醫附二院&#xff0c;是集醫療、教學、科研、預防保健為一體的國家三級甲等綜合醫院。前身為始建于1892年的“重慶寬仁醫院”。醫院現有開放床位 1380張&#xff0c;年門診量超過百萬人次&#xff0c;年收治住院病人4.5萬人…

【Redis實戰篇】秒殺優化

1. 秒殺優化-異步秒殺思路 我們來回顧一下下單流程 當用戶發起請求&#xff0c;此時會請求nginx&#xff0c;nginx會訪問到tomcat&#xff0c;而tomcat中的程序&#xff0c;會進行串行操作&#xff0c;分成如下幾個步驟 1、查詢優惠卷 2、判斷秒殺庫存是否足夠 3、查詢訂單…