修改Tomcat記憶體

  • 文檔創建者:Carly
  • 編輯次數:12
  • 最近更新:Nikozhan 于 2025-06-10
  • 1. 概述

    1.1 問題描述

    使用者工程部署在 Tomcat 容器中,若遇到以下問題:

    • 記憶體上限溢位錯誤:java.lang.OutOfMemoryError:Java heap space

    • FineDataLink 記憶體佔用過高。

    • Tomcat 後台提示 Memory is over threshold

    • 報錯:記憶體上限溢位。

    • 想調整 Tomcat 的預設記憶體。

    • 伺服器壓力大。

    需要將 FineDataLink 工程所在的 Tomcat 伺服器記憶體調大,可參考本文方法解決。

    1.2 解決思路

    為了避免記憶體上限溢位的問題,一方面應適當啟動磁碟快取,另一方面可以根據實際情況調整伺服器記憶體大小。

    本文將詳細說明如何調整 Tomcat 伺服器記憶體大小。

    2. 修改Tomcat伺服器記憶體

    本文僅介紹 Tomcat 類型伺服器記憶體的修改方法。

    建議修改的記憶體相關配置項包括:

    記憶體配置參數
    說明建議值
    Xmx

    指定 Java 堆的最大記憶體大小

    它設定堆的上限,當堆大小達到該值時,JVM將停止分配新的記憶體並觸發垃圾回收

    建議大於 16G ,但不建議超過 80% 的系統記憶體

    使用者可在 健康巡检查看推薦的「堆內記憶體」大小(Xmx 值)

    Xms

    指定 Java 堆的初始記憶體大小

    它設定堆的初始大小,JVM 會在啟動時分配該大小的記憶體

    建議 Xms = Xmx
    MaxDirectMemorySize堆外 NIO 記憶體,指定直接記憶體(Direct Memory)的最大大小

    直接記憶體不受 Java 堆大小的限制,透過本地記憶體直接分配,而不是在 Java 堆中分配

    建議 2GB,參考值2~4GB

    最小 2GB,不限制最大值,但需要考慮使用者伺服器記憶體的大小,FineDataLink 使用的記憶體(BIMax)<= 使用者伺服器記憶體 * 7/8

    Dfineio.read_mem_limit

    fineIO 讀記憶體


    建議 2GB
    Dfineio.write_mem_limitfineIO 寫記憶體建議 1GB

    2.1 透過startup.bat、startup.sh啟動

    若 Tomcat 是透過 startup.bat、startup.sh 啟動的,參考本章方法修改伺服器記憶體。

    2.1.1 Linux

    1)進入%Tomcat_HOME%\bin目錄。尋找名為setenv.sh的檔案。如果檔案不存在,可以建立一個新的setenv.sh檔案。

    注:請確定setenv.sh檔案具有可執行權限。如果沒有可執行權限,可以使用以下命令進行設定:chmod +x setenv.sh

    2)使用正文編輯器開啟setenv.sh檔案。在檔案中新增以下行來設定:

    JAVA_OPTS="$JAVA_OPTS -Xms51200M -Xmx51200M -Xmn12800m -Xss1024k"
    JAVA_OPTS="$JAVA_OPTS -XX:MaxDirectMemorySize=8g"
    JAVA_OPTS="$JAVA_OPTS -Dfineio.read_mem_limit=2"
    JAVA_OPTS="$JAVA_OPTS -Dfineio.write_mem_limit=1"

    注:以上配置僅為參考配置,您可根據上方表格,依據部署所在伺服器情況調整配置參數。

    3)儲存並關閉 setenv.sh 檔案。

    4)重啟 Tomcat 伺服器以使修改生效。管理者登入工程,選擇「管理系統>智慧維運>負載管理>負載監視」,可以看到實時記憶體情況,如下圖所示:

    2.1.2 Windows

    1)進入%Tomcat_HOME%\bin目錄。尋找名為setenv.bat的檔案。如果檔案不存在,可以建立一個新的setenv.bat檔案。

    2)使用正文編輯器開啟setenv.bat檔案。在檔案中新增以下行來設定:

    set JAVA_OPTS=%JAVA_OPTS% -Xms51200M -Xmx51200M -Xmn12800m -Xss1024k
    set JAVA_OPTS=%JAVA_OPTS% -XX:MaxDirectMemorySize=8g
    set JAVA_OPTS=%JAVA_OPTS% -Dfineio.read_mem_limit=2
    set JAVA_OPTS=%JAVA_OPTS% -Dfineio.write_mem_limit=1

    注:以上配置僅為參考配置,您可根據上方表格,依據部署所在伺服器情況調整配置參數。

    3)儲存並關閉 setenv.bat 檔案。

    4)重啟 Tomcat 伺服器以使修改生效。

    管理者登入工程,選擇「管理系統>智慧維運>負載管理>負載監視」,可以看到實時記憶體情況,如下圖所示:

    2.2 Tomcat 為安裝版本

    若透過服務啟動 Tomcat,即不是透過 startup.bat、startup.sh 啟動 Tomcat 的,參考本章方法解決。

    本章以 Win10+Tomcat8+JDK1.8 為例(不同版本可能略有不同請自行處理)。

    2.2.1 方法一

    1)直接雙擊 Tomcat 出現在螢幕右下角的系統托盤,開啟Java選項卡,修改Initial Memory PoolMaximum Memory Pool即可。

    前者為初始記憶體,後者為最大記憶體,最大記憶體儘量不要超過物理記憶體的 80% 。

    2)修改後,重啟 Tomcat 設定生效。

    2.2.2 方法二

    1)在註冊表編輯器中,找到HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\Procrun 2.0\Tomcat8\Parameters\Java(路徑可能有一點差別)。

    修改 JvmMs(初始化記憶體)和 JvmMx(最大記憶體):

    2)重啟Tomcat,設定生效。

    管理者登入工程,選擇「管理系統>智慧維運>負載管理>負載監視」,可以看到實時記憶體情況,如下圖所示:


    附件列表


    主題: 部署升級
    已經是第一篇
    已經是最後一篇
    • 有幫助
    • 沒幫助
    • 只是瀏覽
    • 评价文档,奖励 1 ~ 100 随机 F 豆!