增加JVM堆內存
修改Tomcat啟動腳本catalina.sh
,添加或調整JAVA_OPTS
參數,例如:
-Xms1024m -Xmx2048m
(設置初始堆1GB、最大堆2GB,根據服務器內存調整)。
Java 8+需用-XX:MetaspaceSize
和-XX:MaxMetaspaceSize
替代永久代參數。
優化垃圾回收策略
啟用G1垃圾收集器:-XX:+UseG1GC
,適合大內存場景。
添加GC日志參數分析內存回收情況:-XX:+PrintGCDetails -Xloggc:/path/to/gc.log
。
分析內存泄漏
生成堆轉儲文件:-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/heapdump.hprof
,用Eclipse MAT等工具分析。
檢查代碼中未釋放的資源(如數據庫連接、文件流)或大對象緩存。
調整線程池配置
修改conf/server.xml
中Connector
的maxThreads
參數,減少并發線程數(默認200,可根據需求調整)。
升級Tomcat與JDK
使用最新穩定版Tomcat,修復已知內存問題;確保JDK版本與Tomcat兼容。
操作系統優化
調整Linux內核參數(如ulimit -n
增加文件描述符限制),優化內存分配策略。
操作步驟:
catalina.sh
調整JVM參數并重啟Tomcat。參考來源: