TongWeb安装部署规范建议(容器版)

第一章 前言

本文撰写目的为加强系统平台建设工作的规范化管理,为基于 TongWeb 中间件的系统设计和运行维护人员提供规范和参考。

第二章 术语

    1. 宿主机

我的理解就是运行云服务环境所在的机器,可能是物理机也可能是虚拟机简单理解就是:搭建 docker 的操作系统所在的机器

第三章 环境准备

    1. 宿主服务器上架通电完成

必要前提

    1. 宿主机操作系统安装完成
  1. 必要前提
  2. 磁盘空间,建议不低于 200G,TongWeb 容器版占用空间百兆内,主要是考虑应用程序大小、应用运行产生日志大小、历史日志文件留存时间要求。
  3. 应用日志建议写入独立的应用日志文件中(不输��到中间件控制台)
  4. 修改文件句柄数,执行ulimit -n 验证配置是否生效,默认 1024,建议加大到至少

65535

    1. 容器云环境搭建完成

必要前提

    1. 网络配置完成

非必要,如果可以进机房,也可以直接找个显示器连接上服务器进行相关软件安装

    1. 获取 TongWeb 产品介质及授权许可文件
  1. 必要前提
  2. 确定 TongWeb 产品:轻量版、标准版、企业版、容器版、嵌入版、安全版、国防版
  3. 确定TongWeb 产品版本:7.0
  4. 确认授权许可文件(license.dat)是否与申请的 TongWeb 产品及版本对应
  5. 以上需要东方通销售确认发货准确

第四章 部署架构

    1. 单实例

      1. 部署架构

一个应用系统,起一个docker 服务,每个docker 服务对应一个TongWeb 服务实例

      1. 优点

架构复杂度低,维护简单方便,部署迅速

      1. 缺点

1) 可靠性差,如果这个 TongWeb 服务异常或所在 docker 服务异常,则对外服务中断

    1. 多实例(集群)

      1. 部署架构

一个应用系统,启动多个 docker 服务,每个 docker 服务对应一个TongWeb 服务实例,通过负载软件或硬件或容器云的负载工具进行负载分发组成集群

      1. 优点

  1. 可靠性,高,不会因为其中一个 docker 服务故障或一个TongWeb 实例节点故障而影响业务
  2. 扩展性,高,可通过增加docker 服务增加TongWeb 域实例的方式实现节点扩展
  3. 支持业务高并发

      1. 缺点

1) 复杂度增加,维护成本增加,一般容器云都提供管理端方便进行多 docker 服务的管理

第五章 网络策略

端口开启访问规则的基本原则:对外用户访问只暴露应用访问端口,其它端口为内部进程通信端口,只需对内放开,不需对外暴露

针对需要外部访问的端口,可在启动容器时进行宿主机端口映射配置

服务程序

功能

默认端 

口/协议

端口作用

所在配置文件

TongWeb

提供 服务 的核 心进 程

8088

默认应用访问

端口

${TW_HOME}c

onf/tongweb.xml

7200

JMX 端口,并随机启动两个端

5100

EJB 远程端口

8006

默认停止端口

第六章 产品镜像制作

    1. 安装前准备
  1. 找到与宿主机操作系统和CPU 对应的操作系统镜像(一般到宿主机上找就行)
  2. 找到与宿主机操作系统和 CPU 对应的 OpenJDK 镜像或绿色版 tar 包,尽量安装全量的 jdk 包,而不是只安装 jre 包
  3. 提前规划好 tongweb 相关的端口(容器镜像内的一般采用默认即可,通过映射调整对外端口)

    1. 基础镜像制作
  1. 登录最终 tongweb 部署的任意一台宿主服务器上
  2. 将 TongWeb 容器版介质上传到服务器(如:TongWeb7.0.C.2.tar.gz)
  3. 创建一个基础目录用做镜像制作(如:/opt/images)
  4. 解压TongWeb7.0.C.2.tar.gz 文件,将里边的 tongweb 目录移动到/opt/images 下
  5. 将授权文件 license.dat 放入/opt/images/tongweb/目录中
  6. 解压OpenJDK 文件,将解压后的jdk 目录移动到/opt/images 下
  7. /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"]

  1. /opt/images 目录下执行”docker build -t tongweb:v1 .”
  2. 查看仓库中是否已经创建镜像:docker images,也可以看到镜像 ID
  3. 导��镜像:docker save IMAGE -o /opt/images/tongweb.tar,其中 IMAGE 需要替换为镜像 ID 或者镜像 Name,tongweb.tar 可以任意起名
  4. 导入镜像:docker load -i /opt/images/tongweb.tar,其中 tongweb.tar 为导��时对应的名称
  5. 镜像推送到仓库:具体根据实际容器云平台等具体的情况确定推送方式

    1. 目录说明

目录结构

说明

bin

服务器启动,停止脚本目录。

logs

服务器存放日志文件的目录,日志文件包括访问日志文件和

服务器日志文件等

conf

TongWeb 服务器的配置文件所在目录。

temp

服务器产生的临时文件(应用清缓存从这清理)。

lib

服务器类文件所在目录。

autodeploy

应用部署目录

第七章 日常使用及运维

    1. 挂载目录

为了方便对容器内的信息进行查看可在宿主机上创建挂载目录,然后在启动容器时将容器内的目录映射到宿主机的挂载目录。

如:

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 是非容器版时需要分别指定挂载目录

    1. 容器启停

      1. 启动

  1. 首次后台启动,对外映射 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 容器运行的镜像

  1. 非首次启动

docker start tongweb1(容器运行时--name 指定的服务名)

docker start 4e8f062c8127(容器 ID,可由 docker ps -a 获取)

  1. 重启

docker restart tongweb1(容器运行时--name 指定的服务名)

docker restart 4e8f062c8127(容器 ID,可由 docker ps -a 获取)

  1. 其他运行方式可自行查看docker 相关命令学习
  2. 如使用云平台产品,可根据具体平台文档资料学习

验证服务启动结果:

#查看容器是否运行

宿主机执行:docker ps -a | grep tongweb1(容器运行时--name 指定的服务名)

#查看 TongWeb 启动日志

宿主机执行:docker logs -f 4e8f062c8127(容器 ID,可由 docker ps -a 获取)启动无报错且看到启动成功提示则正常启动

例如:[INFO] [boot] [TongWeb Server Started]

      1. 停止

  1. 正常停止

宿主机执行:

docker stop tongweb1(容器别名,前边启动时--name 参数指定的名字)

docker stop 4e8f062c8127(容器 ID,可由 docker ps -a 获取)

  1. 强制停止(kill)

宿主机执行:docker kill tongweb1(容器别名,前边启动时--name 指定的名字)宿主机执行:docker kill 4e8f062c8127(容器 ID,可由 docker ps -a 获取)

  1. 如使用云平台产品,可根据具体平台文档资料学习

验证服务停止结果:

#查看容器是否运行

宿主机执行:docker ps -a | grep tongweb1(容器运行时--name 参数指定的服务名)可以看到服务的运行状态

    1. JVM 参数优化

      1. 优化建议

  1. JVM 内存大小不是越大越好,以够用为首要原则
  2. 通常根据业务并发量通过压力测试进行确认
  3. JVM 内存大小建议的配置在 2048M 到 6144M,如确实需要加大最大不超过 8192M
  4. 如服务器本身物理内存较大,则可通过“多实例”部署架构,充分利用资源
  5. 上线后需要根据监控资源使用情况及业务增长情况进行实时跟进调整
  6. 以 2C4G 的硬件服务器配置为例可配置为: -Xmx1024m -Xms1024m - XX:MaxMetaspaceSize=512m

      1. 主要参数

参数项

参数名称

默认值

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 启动参数配置”,修改完需要重启服务生效

      1. 修改配置

        1. 修改容器内参数

          1. 获取容器 Id:docker ps -a | grep 容器服务名(--name 指定的值)
          2. 进入容器:docker exec -it 容器 ID/容器服务名 /bin/bash 3) 进入 tongweb 的bin 目录:cd /opt/TongWeb/bin

其中“/opt/TongWeb”与 Dockerfile 文件中配置的一致

  1. 编辑参数配置文件:vi external.vmoptions

添加 JVM 等其他启动参数内容:如:-Xms512m -Xmx1024m

保存后,退��容器:执行exit

  1. 重启容器:docker restart 容器 ID/容器服务名
  2. 再次进入容器查看 tongweb 进程启动参数:ps -ef | grep tongweb

注意:每个容器都需要单独修改,当然也可以修改一个容器后,将容器保存为镜像,其他容器使用新的镜像启动即可

        1. 修改容器外参数

          1. 删除原有的容器
          2. 启动容器时加上 java 相关的内存参数,如:docker run -e JAVA_OPTS='-Xms512m

-Xmx512m'

          1. 进入容器:docker exec -it 容器 ID/容器服务名 /bin/bash 4) 进入 tongweb 的bin 目录:cd /opt/TongWeb/bin
  1. 编辑启动脚本文件: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

  1. 重启容器:docker restart 容器 ID/容器服务名
  2. 再次进入容器查看 tongweb 进程启动参数:ps -ef | grep tongweb

注意:每个容器都需要单独修改,当然也可以修改一个容器后,将容器保存为镜像,其他容器使用新的镜像启动即可

        1. 容器资源动态分配

          1. 启动容器时加上设定容器内存的参数,如: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

  1. 重启容器:docker restart 容器 ID/容器服务名
  2. 再次进入容器查看 tongweb 进程启动参数:ps -ef | grep tongweb

注意:每个容器都需要单独修改,当然也可以修改一个容器后,将容器保存为镜像,其他容器使用新的镜像启动即可

修改已有容器的内存大小:

docker update -m 1024m --memory-swap -1 tongweb3

    1. HTTP 线程数优化

      1. 优化建议

  1. HTTP 线程数大小不是越大越好,以够用为首要原则
  2. 通常根据业务并发量通过压力测试进行确认
  3. 在不确定的情况下默认参数配置即可
  4. 例如 200 用户持续访问(非在线用户 200),TongWeb 节点一个,则最大线程数可设置略大于 200,通过压测和实际监控进行调整
  5. 上线后需要根据监控资源使用情况及业务增长情况进行实时跟进调整

      1. 主要参数

参数项

参数名称

默认值

应用通道名称

name

tong-http-listener

监听端口

port

8088

初始线程数

min-spare-threads

10

最大线程数

max-threads

200

默认 URL 编码

uri-encoding

GBK

      1. 修改配置

容器内:/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 通道

    1. JDBC 数据源配置

      1. 优化建议

  1. JDBC 链接池数大小不是越大越好,以够用为首要原则
  2. 通常根据业务并发量通过压力测试进行确认
  3. 在不确定的情况下默认参数配置即可
  4. 上线后需要根据监控资源使用情况及业务增长情况进行实时跟进调整
  5. 例如 200 用户持续访问(非在线用户 200),TongWeb 节点一个,则最大连接数可设置略大于 200,通过压测和实际监控进行调整一般不低于 HTTP 线程数的最大值

      1. 主要参数

参数项

参数名称

默认值

连接 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

最大连接数生产环境根据实际并发数进行调整

      1. 修改配置

容器内:/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 数据源配置

    1. 应用部署

      1. 部署程序包类型
  1. 文件部署

文件部署即应用以war 包的形式进行部署。

  1. 目录部署

目录部署即应用以展开的目录形式进行部署,目录部署支持 Web 应用。目录部署的优点是方便应用的修改,当应用包含了需要频繁修改的文件时,使用目录部署会相对方便。

注:容器云版仅支持 war 包

      1. 应用部署

将部署的应用war 包,以 war 文件或展开的目录方式拷贝到自动部署目录:容器内:/opt/TongWeb/autodeploy 目录中。

宿主机:guazai_tongweb/autodeploy 目录中。

注:具体可参考 TongWeb 手册“TongWeb 容器云版本用户手册.pdf”第 4 章节-4.1.1节中的自动部署配置

    1. 日志查看

      1. 系统日志

注:具体可参考 TongWeb 手册“TongWeb 容器云版本用户手册.pdf”第 4 章节中的

4.5.2 章节“系统日志”

  1. 默认按文件大小轮转,每个文件 20M,默认保留历史 20 个文件
  2. 日志具体的信息配置在

容器内:/opt/TongWeb/conf/logging.propertie 文件中。 宿主机:guazai_tongweb/conf/logging.properties 文件中。

      1. 访问日志

注:具体可参考 TongWeb 手册“TongWeb 容器云版本用户手册.pdf”第 4 章节中的

4.5.3 章节“访问日志”  4.2.3 章节“虚拟主机

  1. 访问日志默认关闭,一般根据需要在开启,无特殊需求可不开启
  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 两个属性

  1. 访问日志具体的信息配置在

容器内:/opt/TongWeb/conf/logging.propertie 文件中。 宿主机:guazai_tongweb/conf/logging.properties 文件中。

    1. 资源监控

      1. 监视配置

注:具体可参考 TongWeb 手册“TongWeb 容器云版本用户手册.pdf”第 8 章节“监控服

    1. 注意事项

1) 应用程序产生的资源信息(如:上传附件、日志文件),不要放到 tongweb 的目录下,也不要放到应用目录下,避免重装 TongWeb 或解部署应用导致数据丢失。

2)

第八章 应急处理

    1. 应急场景

      1. 场景一:个别 APP 服务器宕机/Crash

现象描述:监控报警 APP 服务器状态异常。

诊断流程:查看 APP 服务器进程和服务端口是否正常

影响范围:影响登录到异常服务器上的用户,需要重新登录预计处理时间:40 分钟

处理方案处置一:APP 服务器重启

      1. 场景二:APP 服务器进程占用 CPU 资源高

现象描述:监控报警 APP 服务器 CPU 使用率超过告警阈值。

诊断流程:查看 APP 服务器进程占用 CPU 和操作系统 CPU 使用情

况,确认CPU 使用率高的原因为 APP 服务器进程导致影响范围:登录到异常服务器的用户操作变慢

预计处理时间:20 分钟

启动依据:操作系统 CPU 使用率大于 80%,且主要由应用服务器进程占用

处理方案:处置四和处置二间隔尽可能小,成对执行)处置四:定位占用CPU 资源较高的线程

处置二:手工产生ThreadDump

处置一:APP 服务器重启

应用验证

      1. 场景三:APP 服务器进程内存溢��导致无法正常服务

现象描述:APP 服务器进程发生JVM 内存溢出,导致进程宕机,无法正常对外提供服务

诊断流程:查看 APP 服务器进程占用内存情况,以及日志目录是否产生了heapdump 文件,确认服务器出现了内存溢出

影响范围:登录到异常服务器的用户操作变慢,影响用户体验预计处理时间:20 分钟

启动依据:APP 服务器出现内存溢出、产生 heapdump

处理方案

处置三:手工产生 HeapDump(如果未产生 heapdump)

处置一:APP 服务器重启

应用验证

      1. 场景四:APP 服务器JVM 内存使用过高导致应用响应慢

现象描述:应用响应变慢,无法正常对外提供服务

诊断流程:查看 APP 服务器进程占用内存情况,查看 JVM 内存使用情况,确认服务器 JVM 内存不足,GC 日志频繁fullgc

影响范围:登录到异常服务器的用户操作变慢,影响用户体验预计处理时间:40 分钟

启动依据:APP 服务器出现 JVM 内存不足、CPU 使用率高处理方案

处置三:手工产生 HeapDump

处置五:调整 APP 服务器 JVM 内存大小

处置一:APP 服务器重启

应用验证

      1. 场景五:APP 服务器数据源使用达到阈值应用缓慢

现象描述:APP 服务器数据源连接池使用达到阈值、线程池使用率高、应用响应时间变长。

诊断流程:查看数据源连接池达到最大值,且使用率长时间处于

100%

影响范围:联机交易出现响应缓慢甚至出现大量交易超时失败等,

大量用户无法登陆,影响对外联机服务预计处理时间:20 分钟

启动依据:监控上有 jdbc 连接池高或 WebContainer 线程池使用

率高告警。APP 服务器日志中出现获取数据源连接失败或大量线程挂起信息。应用出现访问缓慢或者访问异常

处理方案:(先收集信息再重启服务

处置二:手工产生ThreadDump

收集数据源URL、通知数据库专业。

处置六:收集 TongWeb 数据源连接池trace

处置一:APP 服务器重启

前提是使用了 TongWeb 的数据库连接池,并且处置六修改后,需在下次出现问题的时候进行日志收集和分析。

    1. 应急处置

      1. 处置一:APP 服务器重启服务

注:通常 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]

      1. 处置二:手工产生 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 一定在重启前保存到其他目录,重启后内容会被重新覆盖

      1. 处置三:手工产生 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。具体文件存储路径及名称,以实际执行命令设定为准。

      1. 处置四:收集占用 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 开头的文件

      1. 处置五:调整 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 对应的参数值,是否为目标数值

      1. 处置六:收集 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 日志

第九章 其他

内容概要:本文系统梳理了多个科研领域的前沿研究与技术实现,重点涵盖FDTD方法中的完美匹配层(PML)研究,以及Matlab/Simulink在电磁、电力、控制、通信、信号处理、图像处理、路径规划、能源系统优化等领域的仿真与算法实现。文中列举了大量基于Matlab和Python的科研案例,如风电功率预测、负荷预测、无人机三维路径规划、电池系统故障诊断、雷达模拟、通信编码、微电网优化调度等,并强调结合智能优化算法(如粒子群、遗传算法、深度学习等)提升系统性能。同时,提供了丰富的代码资源与仿真模型,涵盖永磁同步电机控制、逆变器设计、多智能体任务分配、虚拟电厂调度等复杂系统,助力科研人员快速开展复现实验与创新研究。; 适合人群:具备一定编程基础,熟悉Matlab/Python工具,从事电气工程、自动化、通信、人工智能、新能源、控制科学等相关领域研究的研发人员及研究生。; 使用场景及目标:① 学习并实现FDTD仿真中的PML边界条件以有效抑制数值反射;② 掌握Matlab/Simulink在多物理场建模、控制系统设计与优化算法中的综合应用;③ 借助提供的代码资源完成科研复现、课程设计、竞赛项目或工程原型开发; 阅读建议:此资源以科研实战为导向,不仅提供理论方法,更强调代码实现与仿真验证。建议读者结合自身研究方向,按目录顺序查阅相关模块,下载配套代码进行调试与二次开发,以达到学以致用、融会贯通的目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值