东方通web(TW8)单进程模式运行验证
前言
近期验证tw8(版本8.0.7.0)时候,(环境是替换tomcat,war包部署的)发现启动运行命令:/AppHome/TongWeb8.0.7.0/bin/startd.sh
时候,其实默认最小启动内存需要2G以上,这不符合容器环境下使用,因为启动直接先占用2G的内存,而且无法进行jvm内存限制,这非常不合理。
上面的废话总结原因如下:
- 资源浪费:在Kubernetes等容器环境中,固定2GB内存占用导致资源利用率低下
- 配置失效:已设置的
JAVA_OPTS="-Xms512m -Xmx512m"
环境变量未生效 - 弹性不足:无法根据实际需求动态调整JVM内存参数
根本原因分析
因此查看了一下后续TW8是怎么进一步调用服务的,执行ps -ef | grep java
发现如下,挂不得我已设置默认JAVA_OPTS=-Xms512m -Xmx512m
也是没生效,如下图:
- 启动命令中硬编码了
-Xms2048m -Xmx2048m
参数 JAVA_OPTS
环境变量未被引用,导致配置完全失效- 系统启动过程分为两个阶段:
startd.sh
初始化环境 –TongWebMain
实际启动JVM进程
方案验证
因为我暂时也没新TW8版本的二进制包,看了下tw8.0.7.0还是23年的,根据网上反馈已出到8.0.9.0+版本。因此会有此新模式。此模式会导致tongweb.xml失效。
直接参数覆盖
通过显式指定JVM参数,覆盖内存配置优化:
java -Xms512m -Xmx1048m \
-Djava.rmi.server.hostname=127.0.0.1 \
-Djava.io.tmpdir=/AppHome/TongWeb8.0.7.0/domains/domain1/temp \
-Djava.security.egd=file:/dev/./urandom \
-server -Djava.awt.headless=true \
-Dtongweb.home=/AppHome/TongWeb8.0.7.0 \
-Dtongweb.base=/AppHome/TongWeb8.0.7.0/domains/domain1 \
-Dcatalina.home=/AppHome/TongWeb8.0.7.0 \
-Dcatalina.base=/AppHome/TongWeb8.0.7.0/domains/domain1 \
-XX:CICompilerCount=6 \
-javaagent:/AppHome/TongWeb8.0.7.0/version8.0.7.0/boot/tongweb-bootstrap.jar \
-classpath /AppHome/TongWeb8.0.7.0/version8.0.7.0/boot/tongweb-bootstrap.jar:/AppHome/TongWeb8.0.7.0/version8.0.7.0/tools/license/license-client-4.5.0.0.jar com.tongweb.main.TongWebMain start -Xms512m -Xmx512m
运行后发现运行配置是生效的
总结
以上只是我个人踩坑验证,因无法对接东方通技术,都是空谈,也反馈让技术那边提供最新安装包,如果有后续再看看新版吧,就这样吧。