Ubuntu系统下Tomcat 9初始Xmx参数来源问题
Tomcat初始-Xms/-Xmx参数来源解析(Ubuntu环境)
Ubuntu包管理器安装的Tomcat默认参数来源
若你是通过apt这类官方包管理器安装的Tomcat,默认的-Xms512M、-Xmx1024M等JVM参数,并非存放在Tomcat自身bin目录的脚本里,而是由Ubuntu系统层面的Tomcat配置文件控制:- 核心配置文件为
/etc/default/tomcat9,文件中定义的JAVA_OPTS变量包含了这些内存参数 - systemd服务配置文件
/lib/systemd/system/tomcat9.service会引用上述配置,确保启动时加载这些参数
- 核心配置文件为
Tomcat bin目录无相关参数的原因
Ubuntu官方打包的Tomcat采用了系统配置与应用配置分离的方式,系统级的启动参数被放在系统目录的配置文件中,而非Tomcat自带的bin脚本里,所以你在bin/*.sh中找不到这些参数。setenv.sh添加参数后出现重复的原因
setenv.sh是Tomcat官方推荐的自定义参数文件,会被catalina.sh等脚本加载执行。由于Ubuntu系统配置中已经定义了-Xmx1024M,你又在setenv.sh中添加了-Xmx2048M,启动时两个参数都会被传入命令行(最终JVM会以最后一个参数为准生效)。修改默认参数的正确方式
- 对于包管理器安装的Tomcat,建议直接修改
/etc/default/tomcat9中的JAVA_OPTS,替换原有-Xms和-Xmx值即可 - 若坚持使用
setenv.sh自定义参数,可先过滤掉已有的内存参数再添加新值,示例代码:# 移除已有的-Xms和-Xmx参数 CATALINA_OPTS=$(echo "$CATALINA_OPTS" | sed -e 's/-Xms[0-9]*[MGmg]//g' -e 's/-Xmx[0-9]*[MGmg]//g') export CATALINA_OPTS="$CATALINA_OPTS -Xms1024M -Xmx2048M"
- 对于包管理器安装的Tomcat,建议直接修改
内容的提问来源于stack exchange,提问作者spinemelter
相关产品推荐
相关产品推荐

