優化Ubuntu Tomcat內存使用可從以下方面入手:
調整JVM內存參數
在catalina.sh中設置JAVA_OPTS,合理配置堆內存(-Xms和-Xmx,建議設為物理內存的50%-80%)、非堆內存(-XX:MetaspaceSize和-XX:MaxMetaspaceSize,Java 8+)及垃圾回收器(如-XX:+UseG1GC)。
export JAVA_OPTS="-Xms2g -Xmx4g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:+UseG1GC"
優化線程池配置
在conf/server.xml中調整Connector參數:
maxThreads:根據CPU核心數和負載設置(建議50-500,高并發場景可更高)。minSpareThreads:保持少量空閑線程(建議10-50)。acceptCount:設置請求隊列長度(建議與maxThreads相近)。<Connector port="8080" protocol="HTTP/1.1" maxThreads="200" minSpareThreads="50" acceptCount="100" />
啟用高效連接器與協議
使用NIO或NIO2連接器(默認),并啟用HTTP/2協議以減少連接開銷。
監控與調優
jconsole、VisualVM等工具監控內存使用和GC情況,調整參數避免頻繁GC。操作系統級優化
調整文件描述符限制(ulimit -n)和內核參數(如net.core.somaxconn),支持更高并發連接。
注意:修改配置后需重啟Tomcat,并通過壓力測試驗證效果,避免配置不當導致服務異常。