生产系统中TongWeb故障应急处理办法
本文档主要说明在上线正式运行的系统中,若TongWeb或部署在TongWeb上的应用出现问题时,现场维护人员或在现场的TongWeb支持人员应当采取的处理步骤。
工作基本原则:
- 任何操作必须经过项目相关负责人同意后进行,禁止在未允许的情况下做任何操作,否则后果自负。
- 在重启TongWeb前,需花费几分钟收集相关日志,切记盲目重启TongWeb导致无法收集日志,事后无法分析问题。
- 以尽快恢复生产系统,不影响用户使用为基本原则。
关于TongWeb进程相关概念的一些说明,请注意在说明时不要混淆:
- “TongWeb宕机”的含义:查看TongWeb的Java进程不存在,TongWeb已经因非人为运行stopserver而停止,此种情况称之为TongWeb宕机。
- “TongWeb假死”的含义:查看TongWeb的Java进程还在,但TongWeb的控制台和应用都不能访问或访问很慢,此种情况称之为TongWeb进程假死。
- “应用访问异常”的含义:查看TongWeb的Java进程还在,TongWeb的控制台也能正常访问,但应用访问不正常或有错误。此种情况称之为“应用访问异常”。
不同情况的处理步骤:
1. license过期情况
-
TongWeb的license过期后TongWeb自动停止,请尽快联系东方通销售人员索要TongWeb产品的license,TongWeb支持人员无权发正式产品license或可以提供临时license。
-
应用的license过期,请尽快联系应用开发商索要产品的license。
-
SSL证书过期,请尽快联系证书公司索要新的证书。
2. TongWeb已经停止,Java进程已经不存在的情况
- 立刻启动TongWeb,恢复系统
- 备份出bin、conf下配置文件,并记录这些文件时间,以判断最后一次应用的配置修改时间。
- 打包保留TongWeb的logs目录日志和bin下的nohup.out文件,并记录这些文件的时间,以判断TongWeb是何时停止的。
- 查看TongWeb的bin目录下有没有生成javacore、hs、heapdump开头的文件,并收集这些文件。
3. 应用系统某些功能点无法使用
某些项目在上线前会有测试不充分的情况,甚至存在移植到TongWeb后就直接上线的情况,所以可能存在上线后,功能都不正常的情况。
应用系统有的功能点能用,有的不能用。出现这种情况注意查看TongWeb的日志是否存在异常信息,肯定是因为应用有异常才不能用的。若日志中无任何异常信息,则需要在应用中加入调试信息或打开应用的DEBUG日志,重部署应用或重启TongWeb后,再收集异常日志分析问题。
4. TongWeb的Java进程假死,且应用和TongWeb控制台都不能访问了
- 存在个别情况下,Java进程还在,但应用和TongWeb控制台都不能访问,这时可通过jstack、jmap、jstat、netstat、lsof等命令生成堆栈日志、端口信息、GC日志以备分析,然后再重启TongWeb。
注:若TongWeb为集群环境,其中一个TongWeb出现问题不影响生产系统运行,建议保留有问题的环境,以供分析。
5. 应用系统运行慢的情况
- 查看TongWeb的Java进程占用CPU是否很高,若CPU很高则记录线程占用的CPU情况,并记录下线程占用CPU的信息。
- 当应用访问慢时,访问一下TongWeb的控制台查看是否也慢,若访问控制台也慢,则有可能是因为CPU占用高,需按上一条方法处理。也可能是Java的内存出现问题,需查看TongWeb日志有没有内存溢出错误或GC日志中full gc占用过高,然后通过jmap生成内存镜像文件以备分析。
- 若访问TongWeb的控制台不慢,CPU占用也不高,只是访问应用慢。则可能是TongWeb的线程池或数据源的连接池占满。这时需通过jstack生成堆栈日志,并通过TongWeb控制台查看TongWeb的线程数、连接池的使用数。若为开源连接池,则通过netstat或通过数据库命令查看连接数,并记录下来,以备分析。
- 收集完以上信息后,根据维护负责人员意见,看是否需要重启TongWeb快速恢复生产系统。重启前需要开启GC日志、数据源泄露日志、慢SQL日志、线程监控和数据源监控以再出现问题时,有分析数据。
6. 重启TongWeb后仍存在问题
重启TongWeb后仍存在问题,应用的某些功能还无法使用。这种情况需根据日志分析具体的原因了,注意收集当时的日志信息。这时问题可能与TongWeb无关,有可能是数据库、网络、更改过应用等方面原因造成的问题。如:访问静态页面无问题,但访问与数据库相关的JSP页面时有问题,则可能是数据库连接或数据库SQL有问题了。
按上述情况进行初步的日志收集,并在恢复系统后,分析日志并找相关人员了解如下情况:
- 系统何时开始出现问题的,以前是否一直有问题,出现问题的频率和时间。
- 嘱咐现场维护人员,再出现此问题时该收集哪方面的信息。
- 最近系统做过哪方面的修改,如:数据库、网络、应用包更新、操作系统的参数修改等等。
相关文章:
生产系统中TongWeb故障应急处理办法
本文档主要说明在上线正式运行的系统中,若TongWeb或部署在TongWeb上的应用出现问题时,现场维护人员或在现场的TongWeb支持人员应当采取的处理步骤。 工作基本原则: 任何操作必须经过项目相关负责人同意后进行,禁止在未允许的情况…...

PHP学习笔记(十一)
类常量 可以把在类中始终保持不变的值定义为常量,类常量的默认可见性是public。 接口中也可以定义常量。 可以用一个变量来动态调用类,但该变量的值不能为关键字 需要注意的是类常量只为每个类分配一次,而不是为每个类的实例分配。 特殊的…...
PyTorch中 torch.utils.data.DataLoader 的详细解析和读取点云数据示例
一、DataLoader 是什么? torch.utils.data.DataLoader 是 PyTorch 中用于加载数据的核心接口,它支持: 批量读取(batch)数据打乱(shuffle)多线程并行加载(num_workers)自…...

直线模组在手术机器人中有哪些技术挑战?
手术机器人在现代医疗领域发挥着越来越重要的作用,直线模组作为其关键部件,对手术机器人的性能有着至关重要的影响。然而,在手术机器人中使用直线模组面临着诸多技术挑战,具体如下: 1、高精度要求:手术…...

RK3568DAYU开发板-平台驱动开发--UART
1、程序介绍 本程序是基于OpenHarmony标准系统编写的平台驱动案例:UART 系统版本:openharmony5.0.0 开发板:dayu200 编译环境:ubuntu22 部署路径: //sample/06_platform_uart 2、基础知识 2.1、UART简介 UART指异步收发传输器(Univer…...
ubuntu 安装 Redis 5.0.8 的完整步骤
以下是根据前面的沟通记录整理的完整安装过程和依赖项,确保在 Ubuntu 22 上成功安装 Redis 5.0.8。 安装 Redis 5.0.8 的完整步骤 1. 安装依赖 在编译和运行 Redis 之前,需要安装一些必要的工具和库: sudo apt update sudo apt install bu…...

制造企业搭建AI智能生产线怎么部署?
制造商需要精准协调生产和发货,确保订单及时交付。MES、ERP、CRM 系统与生产线集成,对生产管理流程、物料跟踪、品控、确定货期至关重要。如果某个系统发生延迟或者效率低下,会在造成整个生产环节停滞,影响最终交付,导…...

深度学习驱动的超高清图修复技术——综述
Deep Learning-Driven Ultra-High-Definition Image Restoration: A Survey Liyan Wang, Weixiang Zhou, Cong Wang, Kin-Man Lam, Zhixun Su, Jinshan Pan Abstract Ultra-high-definition (UHD) image restoration aims to specifically solve the problem of quali…...
unix/linux source 命令,其内部结构机制
要理解 source (或 .) 命令的内部结构机制,我们需要戴上“操作系统”和“解释器设计”的眼镜,深入到 Shell 如何管理其状态以及如何执行命令的层面。 虽然我们无法直接看到 Shell 内部的 C 代码(除非我们去阅读 Bash 或 Zsh 的源码),但我们可以基于其行为和操作系统的原理…...
【LLM】FastAPI入门教程
note FastAPI 是一个现代的、快速(高性能)的 Web 框架,用于构建 API(应用程序编程接口)。它基于 Python 3.7,使用了 Python 类型提示(type hints),并且具有自动化的文档…...
进程同步机制-信号量机制-记录型信号量机制中的的wait和signal操作
wait和signal是记录型信号量机制中用于实现进程同步与互斥的两个重要操作, wait 操作 wait(semaphores *S) {S->value --;if (S->value<0) block(S->list) }请求资源:S->value --; 这一步表示进程请求一个单位的资源,将信号…...
gitlib 常见命令
git clone <项目URL> # 从 GitLab 拉取代码到本地 git status 查看状态 git diff 文件路径 查看修改位置 git diff 文件路径 查看修改位置 black -l 180 路径 格式化文件 git add 路径 (可以多个) 添加修改到暂存区 git commit -m “提交说明…...

Azure DevOps 管道部署系列之二IIS
本博客旨在提供如何使用 Azure DevOps YAML 管道部署到虚拟机上的 IIS 的实用指南。 开始之前,您需要做好以下准备: 您拥有要部署的服务器的访问权限以及 PowerShell 的管理员访问权限。您拥有要部署的远程服务器的互联网访问权限。您拥有在服务器上安装 .NET Core 托管包的…...

Vue.js教学第十七章:Vue 与后端交互(一),Axios 基础
Vue 与后端交互(一):Axios 基础 在现代前端开发中,Vue 应用通常需要与后端 API 进行数据交互,以实现动态数据的获取和提交。Axios 是一个基于 Promise 的 HTTP 客户端,广泛用于 Vue 项目中与后端进行通信。本文将深入讲解 Axios 的基本用法,包括如何通过 Axios 发送 GE…...

人工智能浪潮下,制造企业如何借力DeepSeek实现数字化转型?
一、DeepSeek技术概述 DeepSeek,凭借其强大的深度学习和自然语言处理能力,能够理解复杂问题并提供精准解决方案。它不仅能够作为学习、工作、生活的助手,满足用户在不同场景下的需求,更能在制造业中发挥重要作用。通过自然语言交…...
NodeJS全栈开发面试题讲解——P2Express / Nest 后端开发
✅ 2.1 Express 的中间件机制?如何组织一个 RESTful API 项目? 面试官好,我来讲讲 Express 的中间件机制,它是 Express 架构的核心,也是组织 RESTful 项目的基础。 🧩 什么是中间件? 中间件&am…...

从线性代数到线性回归——机器学习视角
真正不懂数学就能理解机器学习其实是个神话。我认为,AI 在商业世界可以不懂数学甚至不懂编程也能应用,但对于技术人员来说,一些基础数学是必须的。本文收集了我认为理解学习本质所必需的数学基础,至少在概念层面要掌握。毕竟&…...

计算机网络相关发展以及常见性能指标
目录 一、因特网概述 1.1 基本概念 1.2 因特网发展的三个阶段 1.3 英特网服务提供者ISP 1.4 英特网的标准化工作 1.5 因特网的组成 1.6 简单总结 二、3种交换方式 2.1 电路交换(Circuit Switching) 2.2 分组交换(Packet Switching&…...

通义灵码:基于MCP的火车票小助手系统全流程设计与技术总结
具体操作步骤请访问:https://blog.csdn.net/ailuloo/article/details/148319336?spm1001.2014.3001.5502 前沿技术应用全景图 一、项目背景与需求分析 目标:基于12306 MCP接口,开发一款解决高峰出行(春运/节假日)痛…...

为什么建立 TCP 连接时,初始序列号不固定?
主要原因有两个方面: 很大程度上避免历史报文被下一个相同四元组的 TCP 连接接收问题(主要方面)防止黑客伪造相同序列号的 TCP 报文被接收 接下来,详细说说第一点 假设每次建立 TCP 连接时,客户端和服务端的初始序列…...

VBA数据库解决方案二十:Select表达式From区域Where条件Order by
《VBA数据库解决方案》教程(版权10090845)是我推出的第二套教程,目前已经是第二版修订了。这套教程定位于中级,是学完字典后的另一个专题讲解。数据库是数据处理的利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法…...

NX753NX756美光科技闪存NX784NX785
技术解读与产品特性 美光科技的NX系列闪存,包括NX753、NX756、NX784、NX785等型号,代表了当前存储技术的前沿水平。这些产品基于先进的NAND闪存技术,采用业界领先的3D TLC NAND技术,实现了高速的数据读写能力。3D TLC NAND技术通…...

使用 pytesseract 构建一个简单 OCR demo
简介 pytesseract 库是 Google Tesseract OCR (光学字符识别)引擎的一个 Python 封装库,使用广泛且功能强大。 构建 使用 pytesseract 构建一个简单 OCR demo。 步骤一:安装必要的库 您需要在您的 Python 环境中安装 pytessera…...
Cesium快速入门到精通系列教程三:添加物体与3D建筑物
Cesium中添加物体与3D建筑物,对于大规模城市模型,推荐使用 3D Tileset;对于简单几何图形,可以使用 Entity API;对于复杂模型,可以使用 GLTF 格式: 一、添加一个点: 在 Cesium 1.93…...

git 如何解决分支合并冲突(VS code可视化解决+gitLab网页解决)
1、定义:两个分支修改了同一文件的同一行代码,无法自动决定如何合并代码,需要人工干预的情况。(假设A提交了文件a,此时B在未拉取代码的情况下,直接提交是会报错的,此时需要拉取之后再提交才会成功ÿ…...

【CF】Day72——Codeforces Round 890 (Div. 2) CDE1 (二分答案 | 交互 + 分治 | ⭐树上背包)
C. To Become Max 题目: 思路: 二分挺好想的,但是check有点不好写 看到最大值,试试二分,如果 x 可以,那么 x - 1 肯定也可以,所以具有单调性,考虑二分 如何check呢?由于…...

单片机寄存器的四种主要类型!
1. 控制寄存器(Control Registers) 专业定义:用于配置硬件行为或触发操作的寄存器。 大白话: 相当于设备的“控制面板”,通过写入特定值来开关功能或调整参数。例如&am…...

智能嗅探AJAX触发:机器学习在动态渲染中的创新应用
一、问题描述:数据加载变“隐形”,采集举步维艰 随着Web技术不断发展,越来越多网站采用了AJAX、动态渲染等技术来加载数据。以今日头条(https://www.toutiao.com)为例,用户打开网页时并不会一次性加载所有…...

【计算机网络】Linux下简单的UDP服务器(超详细)
套接字接口 我们把服务器封装成一个类,当我们定义出一个服务器对象后需要马上初始化服务器,而初始化服务器需要做的第一件事就是创建套接字。 🌎socket函数 这是Linux中创建套接字的系统调用,函数原型如下: int socket(int domain, int typ…...
Java并发编程实战 Day 3:volatile关键字与内存可见性
【Java并发编程实战 Day 3】volatile关键字与内存可见性 开篇 欢迎来到《Java并发编程实战》系列的第3天!本系列旨在带领你从基础到高级逐步掌握Java并发编程的核心概念和最佳实践。 今天我们将重点探讨volatile关键字及其在多线程程序中确保内存可见性的作用。我…...