第一章 前言
本文撰写目的为加强系统平台建设工作的规范化管理,为基于 TongWeb 中间件的系统设计和运行维护人员提供规范和参考。
第二章 术语
-
- 宿主机
我的理解就是运行云服务环境所在的机器,可能是物理机也可能是虚拟机简单理解就是:搭建 docker 的操作系统所在的机器
第三章 环境准备
-
- 宿主服务器上架通电完成
必要前提
-
- 宿主机操作系统安装完成
- 必要前提
- 磁盘空间,建议不低于 200G,TongWeb 容器版占用空间百兆内,主要是考虑应用程序大小、应用运行产生日志大小、历史日志文件留存时间要求。
- 应用日志建议写入独立的应用日志文件中(不输��到中间件控制台)
- 修改文件句柄数,执行ulimit -n 验证配置是否生效,默认 1024,建议加大到至少
65535
-
- 容器云环境搭建完成
必要前提
-
- 网络配置完成
非必要,如果可以进机房,也可以直接找个显示器连接上服务器进行相关软件安装
-
- 获取 TongWeb 产品介质及授权许可文件
- 必要前提
- 确定 TongWeb 产品:轻量版、标准版、企业版、容器版、嵌入版、安全版、国防版
- 确定TongWeb 产品版本:7.0
- 确认授权许可文件(license.dat)是否与申请的 TongWeb 产品及版本对应
- 以上需要东方通销售确认发货准确
第四章 部署架构
-
- 单实例
-
-
- 部署架构
-
一个应用系统,起一个docker 服务,每个docker 服务对应一个TongWeb 服务实例
-
-
- 优点
-
架构复杂度低,维护简单方便,部署迅速
-
-
- 缺点
-
1) 可靠性差,如果这个 TongWeb 服务异常或所在 docker 服务异常,则对外服务中断
-
- 多实例(集群)
-
-
- 部署架构
-
一个应用系统,启动多个 docker 服务,每个 docker 服务对应一个TongWeb 服务实例,通过负载软件或硬件或容器云的负载工具进行负载分发组成集群
-
-
- 优点
-
- 可靠性,高,不会因为其中一个 docker 服务故障或一个TongWeb 实例节点故障而影响业务
- 扩展性,高,可通过增加docker 服务增加TongWeb 域实例的方式实现节点扩展
- 支持业务高并发
-
-
- 缺点
-
1) 复杂度增加,维护成本增加,一般容器云都提供管理端方便进行多 docker 服务的管理
第五章 网络策略
端口开启访问规则的基本原则:对外用户访问只暴露应用访问端口,其它端口为内部进程通信端口,只需对内放开,不需对外暴露
针对需要外部访问的端口,可在启动容器时进行宿主机端口映射配置
| 服务程序 | 功能 | 默认端 口/协议 | 端口作用 | 所在配置文件 |
| TongWeb | 提供 服务 的核 心进 程 | 8088 | 默认应用访问 端口 | ${TW_HOME}c onf/tongweb.xml |
| 7200 | JMX 端口,并随机启动两个端 口 | |||
| 5100 | EJB 远程端口 | |||
| 8006 | 默认停止端口 |
第六章 产品镜像制作
-
- 安装前准备
- 找到与宿主机操作系统和CPU 对应的操作系统镜像(一般到宿主机上找就行)
- 找到与宿主机操作系统和 CPU 对应的 OpenJDK 镜像或绿色版 tar 包,尽量安装全量的 jdk 包,而不是只安装 jre 包
- 提前规划好 tongweb 相关的端口(容器镜像内的一般采用默认即可,通过映射调整对外端口)
-
- 基础镜像制作
- 登录最终 tongweb 部署的任意一台宿主服务器上
- 将 TongWeb 容器版介质上传到服务器(如:TongWeb7.0.C.2.tar.gz)
- 创建一个基础目录用做镜像制作(如:/opt/images)
- 解压TongWeb7.0.C.2.tar.gz 文件,将里边的 tongweb 目录移动到/opt/images 下
- 将授权文件 license.dat 放入/opt/images/tongweb/目录中
- 解压OpenJDK 文件,将解压后的jdk 目录移动到/opt/images 下
- /opt/images 目录下创建 Dockerfile 文件,内容样例如下
FROM kylin-server-10-sp1-aarch64:b20.05.18.p01 ADD jdk1.8.0_242 /opt/jdk1.8.0_242
ENV JAVA_HOME=/opt/jdk1.8.0_242 ENV PATH=$JAVA_HOME/bin:$PATH
ADD tongweb /opt/TongWeb ENV TZ=Asia/Shanghai
ENV LC_ALL zh_CN.UTF-8
EXPOSE 8006 5100 8088 8443 7200
ENTRYPOINT ["/opt/TongWeb/bin/startserver.sh"]
- /opt/images 目录下执行”docker build -t tongweb:v1 .”
- 查看仓库中是否已经创建镜像:docker images,也可以看到镜像 ID
- 导��镜像:docker save IMAGE -o /opt/images/tongweb.tar,其中 IMAGE 需要替换为镜像 ID 或者镜像 Name,tongweb.tar 可以任意起名
- 导入镜像:docker load -i /opt/images/tongweb.tar,其中 tongweb.tar 为导��时对应的名称
- 镜像推送到仓库:具体根据实际容器云平台等具体的情况确定推送方式
-
- 目录说明
| 目录结构 | 说明 |
| bin | 服务器启动,停止脚本目录。 |
| logs | 服务器存放日志文件的目录,日志文件包括访问日志文件和 服务器日志文件等 |
| conf | TongWeb 服务器的配置文件所在目录。 |
| temp | 服务器产生的临时文件(应用清缓存从这清理)。 |
| lib | 服务器类文件所在目录。 |
| autodeploy | 应用部署目录 |
第七章 日常使用及运维
-
- 挂载目录
为了方便对容器内的信息进行查看可在宿主机上创建挂载目录,然后在启动容器时将容器内的目录映射到宿主机的挂载目录。
如:
mkdir guazai_tongweb
mkdir -p guazai_tongweb/logs mkdir -p guazai_tongweb/conf
mkdir -p guazai_tongweb/autodeploy
然后将 TongWeb7.0.C.2.tar.gz 文件解压后,里边的 tongweb 目录下对应的 conf 目录移动到guazai_tongweb/conf 下
这样,后续启动容器时会读取 guazai_tongweb/conf 下边的配置进行容器中的 tongweb
启动
注意:
如果多个容器中 tongweb 对应的配置信息有差异,需要分别指定挂载目录使用的 TongWeb 是非容器版时需要分别指定挂载目录
-
- 容器启停
-
-
- 启动
-
- 首次后台启动,对外映射 8080 端口用于访问应用,指定容器服务名称为 tongweb1
方便进行容器或业务区分管理
docker run -d -p 8080:8088 -v /opt/guazai_tongweb/conf/:/opt/tongweb/conf/ -v
/opt/guazai_tongweb/logs/:/opt/tongweb/logs/ -v
/opt/guazai_tongweb/autodeploy/:/opt/tongweb/autodeploy/ -v
/opt/guazai_tongweb/license.dat:/opt/tongweb/license.dat --name tongweb1 tongweb:v1
-d:后台运行
-p:端口映射,宿主端口:容器内端口
-v:目录挂载,/opt/guazai_tongweb 宿主机目录,/opt/tongweb 容器内目录
--name:容器服务名称,主要用于标识方便区分 tongweb:v1 容器运行的镜像
- 非首次启动
docker start tongweb1(容器运行时--name 指定的服务名)
docker start 4e8f062c8127(容器 ID,可由 docker ps -a 获取)
- 重启
docker restart tongweb1(容器运行时--name 指定的服务名)
docker restart 4e8f062c8127(容器 ID,可由 docker ps -a 获取)
- 其他运行方式可自行查看docker 相关命令学习
- 如使用云平台产品,可根据具体平台文档资料学习
验证服务启动结果:
#查看容器是否运行
宿主机执行:docker ps -a | grep tongweb1(容器运行时--name 指定的服务名)
#查看 TongWeb 启动日志
宿主机执行:docker logs -f 4e8f062c8127(容器 ID,可由 docker ps -a 获取)启动无报错且看到启动成功提示则正常启动
例如:[INFO] [boot] [TongWeb Server Started]
-
-
- 停止
-
- 正常停止
宿主机执行:
docker stop tongweb1(容器别名,前边启动时--name 参数指定的名字)
docker stop 4e8f062c8127(容器 ID,可由 docker ps -a 获取)
- 强制停止(kill)
宿主机执行:docker kill tongweb1(容器别名,前边启动时--name 指定的名字)宿主机执行:docker kill 4e8f062c8127(容器 ID,可由 docker ps -a 获取)
- 如使用云平台产品,可根据具体平台文档资料学习
-
验证服务停止结果:
#查看容器是否运行
宿主机执行:docker ps -a | grep tongweb1(容器运行时--name 参数指定的服务名)可以看到服务的运行状态
-
- JVM 参数优化
-
-
- 优化建议
-
- JVM 内存大小不是越大越好,以够用为首要原则
- 通常根据业务并发量通过压力测试进行确认
- JVM 内存大小建议的配置在 2048M 到 6144M,如确实需要加大最大不超过 8192M
- 如服务器本身物理内存较大,则可通过“多实例”部署架构,充分利用资源
- 上线后需要根据监控资源使用情况及业务增长情况进行实时跟进调整
- 以 2C4G 的硬件服务器配置为例可配置为: -Xmx1024m -Xms1024m - XX:MaxMetaspaceSize=512m
-
-
- 主要参数
-
| 参数项 | 参数名称 | 默认值 |
| JVM 堆内存最大值 | -Xmx | 2048m |
| JVM 堆内存最小值 | -Xms | 2048m |
| 最 大 元 数 据 空 间 (JDK1.8 及以上) | -XX:MaxMetaspaceSize | 512m |
| 开启 gc 日志 | -verbose:gc | 无 |
| 打印 gc 日志详情 | -XX:+PrintGCDetails | 无 |
| 打印 gc 日志时间戳 | -XX:+PrintGCDateStamps | 无 |
| 日志文件存储位置 | Xloggc:${TongWeb_Base}/logs/gc.log | 无 |
| 开启轮转 | -XX:+UseGCLogFileRotation | 无 |
| 历史文件保留数量 | -XX:NumberOfGCLogFiles=5 | 无 |
| 单 gc 日志文件大小 | -XX:GCLogFileSize=50M | 无 |
GC 日志是否开启可根据实际需要设置,一般是辅助排查问题时用于参考
注:具体可参考 TongWeb 手册“TongWeb 容器云版本用户手册.pdf”第 4 章节-4.11 节中的“JAVA 启动参数配置”,修改完需要重启服务生效
-
-
- 修改配置
-
-
-
-
- 修改容器内参数
-
-
-
-
-
-
- 获取容器 Id:docker ps -a | grep 容器服务名(--name 指定的值)
- 进入容器:docker exec -it 容器 ID/容器服务名 /bin/bash 3) 进入 tongweb 的bin 目录:cd /opt/TongWeb/bin
-
-
-
其中“/opt/TongWeb”与 Dockerfile 文件中配置的一致
- 编辑参数配置文件:vi external.vmoptions
添加 JVM 等其他启动参数内容:如:-Xms512m -Xmx1024m
保存后,退��容器:执行exit

- 重启容器:docker restart 容器 ID/容器服务名
- 再次进入容器查看 tongweb 进程启动参数:ps -ef | grep tongweb
注意:每个容器都需要单独修改,当然也可以修改一个容器后,将容器保存为镜像,其他容器使用新的镜像启动即可
-
-
-
- 修改容器外参数
-
-
-
-
-
-
- 删除原有的容器
- 启动容器时加上 java 相关的内存参数,如:docker run -e JAVA_OPTS='-Xms512m
-
-
-
-Xmx512m'
-
-
-
-
- 进入容器:docker exec -it 容器 ID/容器服务名 /bin/bash 4) 进入 tongweb 的bin 目录:cd /opt/TongWeb/bin
-
-
-
- 编辑启动脚本文件:vi startserver.sh
在#!/bin/sh 后加入一行:JVM_OPTS=${JAVA_OPTS}将以下内容增加红色部分:
if [ ${jdkVersion} -lt ${limitVersion} ]; then
eval $_RUNJAVA -classpath "$CLASSPATH" "${JAVA_OPTS}" $JVM_OPTS "${TONGWEB_OPTS}" ${START_CLASS} start
else
eval $_RUNJAVA ${noWarningCmd} -classpath "$CLASSPATH" "${JAVA_OPTS}" $JVM_OPTS "${TONGWEB_OPTS}" ${START_CLASS} start
fi
保存后,退��容器:执行exit
- 重启容器:docker restart 容器 ID/容器服务名
- 再次进入容器查看 tongweb 进程启动参数:ps -ef | grep tongweb
注意:每个容器都需要单独修改,当然也可以修改一个容器后,将容器保存为镜像,其他容器使用新的镜像启动即可
-
-
-
- 容器资源动态分配
-
-
-
-
-
-
- 启动容器时加上设定容器内存的参数,如:docker run -m 2048m 2) 进入容器:docker exec -it 容器 ID/容器服务名 /bin/bash
-
-
-
3) 进入 tongweb 的bin 目录:cd /opt/TongWeb/bin 4) 编辑参数配置文件:vi external.vmoptions
加入以下参数:(注意:是 75.0 不是 75)
-XX:MaxRAMPercentage=75.0
-XX:InitialRAMPercentage=75.0
-XX:MinRAMPercentage=75.0
以上具体比例可根据实际需要进行调整,这样 jvm 内存就动态的根据容器的内存大小变化而变化,比如容器 4G,则启动 tongweb 时分配 jvm 内存为 3G
保存后,退��容器:执行exit
- 重启容器:docker restart 容器 ID/容器服务名
- 再次进入容器查看 tongweb 进程启动参数:ps -ef | grep tongweb
注意:每个容器都需要单独修改,当然也可以修改一个容器后,将容器保存为镜像,其他容器使用新的镜像启动即可
修改已有容器的内存大小:
docker update -m 1024m --memory-swap -1 tongweb3
-
- HTTP 线程数优化
-
-
- 优化建议
-
- HTTP 线程数大小不是越大越好,以够用为首要原则
- 通常根据业务并发量通过压力测试进行确认
- 在不确定的情况下默认参数配置即可
- 例如 200 用户持续访问(非在线用户 200),TongWeb 节点一个,则最大线程数可设置略大于 200,通过压测和实际监控进行调整
- 上线后需要根据监控资源使用情况及业务增长情况进行实时跟进调整
-
-
- 主要参数
-
| 参数项 | 参数名称 | 默认值 |
| 应用通道名称 | name | tong-http-listener |
| 监听端口 | port | 8088 |
| 初始线程数 | min-spare-threads | 10 |
| 最大线程数 | max-threads | 200 |
| 默认 URL 编码 | uri-encoding | GBK |
-
-
- 修改配置
-
容器内:/opt/TongWeb/conf/tongweb.xml 的<server><web-container><http-listener>节点中。
宿 主 机 : guazai_tongweb/conf/tongweb.xml 的 <server><web-container><http- listener>节点中。
注:具体可参考 TongWeb 手册“TongWeb 容器云版本用户手册.pdf” 第 4 章节中 4.2.4
节的“HTTP 通道”
-
- JDBC 数据源配置
-
-
- 优化建议
-
- JDBC 链接池数大小不是越大越好,以够用为首要原则
- 通常根据业务并发量通过压力测试进行确认
- 在不确定的情况下默认参数配置即可
- 上线后需要根据监控资源使用情况及业务增长情况进行实时跟进调整
- 例如 200 用户持续访问(非在线用户 200),TongWeb 节点一个,则最大连接数可设置略大于 200,通过压测和实际监控进行调整一般不低于 HTTP 线程数的最大值
-
-
- 主要参数
-
| 参数项 | 参数名称 | 默认值 |
| 连接 URL | jdbc-url | 无,创建时指定 |
| 数据库用户名 | user-name | 无,创建时指定 |
| 数据库密码 | password | 无,创建时指定 |
| 初始化连接数 | initial-size | 10 |
| 最大连接数 | max-active | 100 |
| 最大空闲连接数 | max-idle | 10 |
| 最小空闲连接数 | min-idle | 10 |
| 默认测试 sql 语句 | validation-query | 无,创建时指定 |
| 创建连接时验证 | test-on-connect | false |
| 获取连接时验证 | test-on-borrow | false |
| 归还连接时验证 | test-on-return | false |
| 泄露回收开关 | remove-abandoned | false |
| 泄露超时时间 | remove-abandoned-t imeout | 0s |
| 连接泄露检测 | log-abandoned | false |
最大连接数生产环境根据实际并发数进行调整
容器内:/opt/TongWeb/conf/tongweb.xml 的<server><jdbc-connection-pool>节点中。宿主机:guazai_tongweb/conf/tongweb.xml 的<server><jdbc-connection-pool>节点 中。
注:具体可参考 TongWeb 手册“TongWeb 容器云版本用户手册.pdf”第 4 节中 4.3.6 节
的“JDBC 数据源配置”
文件部署即应用以war 包的形式进行部署。
- 目录部署
目录部署即应用以展开的目录形式进行部署,目录部署支持 Web 应用。目录部署的优点是方便应用的修改,当应用包含了需要频繁修改的文件时,使用目录部署会相对方便。
注:容器云版仅支持 war 包
将部署的应用war 包,以 war 文件或展开的目录方式拷贝到自动部署目录:容器内:/opt/TongWeb/autodeploy 目录中。
宿主机:guazai_tongweb/autodeploy 目录中。
注:具体可参考 TongWeb 手册“TongWeb 容器云版本用户手册.pdf”第 4 章节-4.1.1节中的“自动部署配置”
注:具体可参考 TongWeb 手册“TongWeb 容器云版本用户手册.pdf”第 4 章节中的
4.5.2 章节“系统日志”
- 默认按文件大小轮转,每个文件 20M,默认保留历史 20 个文件
- 日志具体的信息配置在
容器内:/opt/TongWeb/conf/logging.propertie 文件中。 宿主机:guazai_tongweb/conf/logging.properties 文件中。
-
注:具体可参考 TongWeb 手册“TongWeb 容器云版本用户手册.pdf”第 4 章节中的
4.5.3 章节“访问日志” 和 4.2.3 章节“虚拟主机“
- 访问日志默认关闭,一般根据需要在开启,无特殊需求可不开启
- 轮转方式有,不轮转,按小时和按天轮转,默认是按小时轮转
- 开关控制在
容器内: /opt/TongWeb/conf/tongweb.xml 的<server><web-container><virtual- host>节点中。
宿主机:guazai_tongweb/conf/tongweb.xml 的<server><web-container><virtual- host>节点中。
主要涉及:accesslog-enabled 和 accesslog-dir 两个属性
- 访问日志具体的信息配置在
容器内:/opt/TongWeb/conf/logging.propertie 文件中。 宿主机:guazai_tongweb/conf/logging.properties 文件中。
注:具体可参考 TongWeb 手册“TongWeb 容器云版本用户手册.pdf”第 8 章节“监控服务”
1) 应用程序产生的资源信息(如:上传附件、日志文件),不要放到 tongweb 的目录下,也不要放到应用目录下,避免重装 TongWeb 或解部署应用导致数据丢失。
2)
现象描述:监控报警 APP 服务器状态异常。
诊断流程:查看 APP 服务器进程和服务端口是否正常
影响范围:影响登录到异常服务器上的用户,需要重新登录预计处理时间:40 分钟
处理方案:处置一:APP 服务器重启
现象描述:监控报警 APP 服务器 CPU 使用率超过告警阈值。
诊断流程:查看 APP 服务器进程占用 CPU 和操作系统 CPU 使用情
况,确认CPU 使用率高的原因为 APP 服务器进程导致影响范围:登录到异常服务器的用户操作变慢
预计处理时间:20 分钟
启动依据:操作系统 CPU 使用率大于 80%,且主要由应用服务器进程占用
处理方案:(处置四和处置二间隔尽可能小,成对执行)处置四:定位占用CPU 资源较高的线程
处置二:手工产生ThreadDump
处置一:APP 服务器重启
应用验证
现象描述:APP 服务器进程发生JVM 内存溢出,导致进程宕机,无法正常对外提供服务
诊断流程:查看 APP 服务器进程占用内存情况,以及日志目录是否产生了heapdump 文件,确认服务器出现了内存溢出
影响范围:登录到异常服务器的用户操作变慢,影响用户体验预计处理时间:20 分钟
启动依据:APP 服务器出现内存溢出、产生 heapdump
处理方案:
处置三:手工产生 HeapDump(如果未产生 heapdump)
处置一:APP 服务器重启
应用验证
现象描述:应用响应变慢,无法正常对外提供服务
诊断流程:查看 APP 服务器进程占用内存情况,查看 JVM 内存使用情况,确认服务器 JVM 内存不足,GC 日志频繁fullgc
影响范围:登录到异常服务器的用户操作变慢,影响用户体验预计处理时间:40 分钟
启动依据:APP 服务器出现 JVM 内存不足、CPU 使用率高处理方案:
处置三:手工产生 HeapDump
处置一:APP 服务器重启
应用验证
现象描述:APP 服务器数据源连接池使用达到阈值、线程池使用率高、应用响应时间变长。
诊断流程:查看数据源连接池达到最大值,且使用率长时间处于
100%
影响范围:联机交易出现响应缓慢甚至出现大量交易超时失败等,
大量用户无法登陆,影响对外联机服务预计处理时间:20 分钟
启动依据:监控上有 jdbc 连接池高或 WebContainer 线程池使用
率高告警。APP 服务器日志中出现获取数据源连接失败或大量线程挂起信息。应用出现访问缓慢或者访问异常
处理方案:(先收集信息再重启服务):
处置二:手工产生ThreadDump
收集数据源URL、通知数据库专业。
处置一:APP 服务器重启
前提是使用了 TongWeb 的数据库连接池,并且处置六修改后,需在下次出现问题的时候进行日志收集和分析。
注:通常 APP 异常需要先收集信息进行异常分析,中间件人员信息收集完成后由中间件运维通知应用重启。具体操作以应用的应急预案为准,以下步骤仅做参考。
恢复步骤:
使用TongWeb 应用用户登录目标服务器
#重启启动 TongWeb 所在的容器
docker restart 容器 ID/容器 Name #启动 TongWeb 所在的容器
docker start 容器 ID/容器 Name
验证方案:
#查看 TongWeb 所在容器运行状态
docker ps –a | grep 容器 ID/容器 Name #查看 TongWeb 启动日志
docker logs -f 容器 ID/容器 Name
启动无报错且看到启动成功提示则正常
例如:[INFO] [boot] [TongWeb Server Started]
-
-
- 处置二:手工产生 ThreadDump
-
恢复步骤:
1、 生成ThreadDump:
#进入到容器内部
docker exec -it 容器 ID/容器 Name /bin/bash #查找 TongWeb 进程对应的进程号
ps -ef|grep java | grep tongweb #收集 ThreadDump
kill -3 {App 服务器进程号}
#间隔 30 秒到 1 分钟,再次执行 kill -3 收集,共收集 3 次
#通过 jstack 命令收集
/{$JAVA_HOME}/bin/jstack –l {App 服务器进程号} > /log/stack_{进程号}_[1-3].log
其中:/log/stack_{进程号}_[1-3].log 可根据需要自行制定路径及文件名称,多次执行
1-3 需要更换
验证方案:
1、 收集ThreadDump:
收集/${TW_HOME}/logs/jvm.log,或收集/log/stack_{进程号}_[1-3].log 文件
注意:TongWeb 的 jvm.log 一定在重启前保存到其他目录,重启后内容会被重新覆盖
-
-
- 处置三:手工产生 HeapDump
-
恢复步骤:
#进入到容器内部
docker exec -it 容器 ID/容器 Name /bin/bash
#找到 TongWeb 的进程号
ps -ef|grep java | grep tongweb #收集 heapdump
/{$JAVA_HOME}/bin/jmap -dump:format=b,file=./heapdump.bin {进程号}
其中 file=./heapdump.bin 为在当前目录下生成文件,可根据需要自行执行目录
验证方案:
收集./heapdump.bin 文件,文件格式:heapdump.bin。具体文件存储路径及名称,以实际执行命令设定为准。
-
-
- 处置四:收集占用 CPU 资源较高的线程
-
恢复步骤:
#进入到容器内部
docker exec -it 容器 ID/容器 Name /bin/bash #查找 TongWeb 进程对应的进程号
ps -ef | grep java | grep tongweb
#查看并记录进程对应的线程占用 cpu 信息
pid={进程号}
Linux 平台:
top -bH -d 2 -n 50 -p ${pid} > topdashH.${pid}.out & AIX 平台:
ps –mp {pid} –o THREAD > topdashH.${pid}.out &
验证方案:
收集当前目录下生成的 topdashH 开头的文件
-
-
- 处置五:调整 APP 服务器 JVM 内存大小
-
恢复步骤:
具体调整方式需根据 7.3 章节“JVM 参数优化”的配置方式以下以简单的调整方式介绍
以下以简单的调整方式介绍
#进入到容器内部
docker exec -it 容器 ID/容器 Name /bin/bash
#使用 TongWeb 应用用户登录目标服务器,进入 TongWeb 目录
cd /${TW_HOME}/bin
#打开 external.vmoptions 文件
vi external.vmoptions
#调整 JVM 大小,比如将“-Xms2048m -Xmx2048m”调整为目标大小,比如“-Xms3072m –Xmx3072m”
#保存,重启 TongWeb 参考处置一,具体大小根据需要调整,最大不超过 8192M
验证方案:
1、 验证JVM 参数是否生效:
#进入到容器内部
docker exec -it 容器 ID/容器 Name /bin/bash #查看 TongWeb 进程启动时间
ps –ef | grep java | grep tongweb
#查看进程信息中,-Xms 和-Xmx 对应的参数值,是否为目标数值
-
-
- 处置六:收集 TongWeb 数据源连接池 trace
-
前提是使用了 tongweb 的数据库连接池恢复步骤:
开启Tongweb 数据源连接池trace:
#进入到容器内部
docker exec -it 容器 ID/容器 Name /bin/bash
#找到/opt/TongWeb/conf/tongweb.xml 的<server><jdbc-connection-pool>节点中
#增加以下参数: log-abandoned="true"
remove-abandoned-timeout="22" remove-abandoned="true"
具体在/${TW_HOME}/conf/tongweb.xml 文件中
remove-abandoned-timeout="22" ;--泄露超时时间,可根据实际业务情况设置一个值单位“秒”
remove-abandoned="true";--泄露回收,开启需要慎重,如果只是要分析是否存在泄露的可能则可不开启
其中泄露超时时间,可根据实际业务情况设置一个值单位 “秒”
其中泄露回收,开启需要慎重,如果只是要分析是否存在泄露
的可能则可不开启。验证方案:
收集trace 日志:
在/${TW_HOME}/logs/目录下收集 server.log 日志
第九章 其他
&spm=1001.2101.3001.5002&articleId=148278237&d=1&t=3&u=a1b959671dec434e93547390f3e22c2c)

被折叠的 条评论
为什么被折叠?



