AgilePLM应用周期性崩溃-问题解决

news2024/11/26 0:41:51

问题现象

  • 每周六2点左右,AgilePLM应用进程都会崩溃,具体表现为登录Agile应用服务器之后,找不到weblogic应用进程(ps -ef | grep java)。
  • 从服务器所有相关日志中没有找到任何可疑的异常日志。 当天Agile应用重启之后,一切恢复正常,下周六2点左右同样的问题又会再次出现。
  • 由于IAgileSession创建失败,所有和Agile项关联的程序都无法正常使用。

环境说明

  • CentOS Linux 7.9,JDK1.8

  • Agile 9.3.6.10,Weblogic 12.2.1.3.0

原因分析

问题原因我们分析了一个多月,中间过程很曲折,走了很多弯路。如果不想看分析过程的,可以直接跳到真正原因章节。

确定异常时间

通过分析agile的weblogic日志,发现agile进程是每周六的2:10~2:11左右崩溃的。

业务程序原因排查

首先怀疑的是业务程序的定时任务。排查了所有代码并没有每周六执行的定时任务,只有每天2点执行的任务。而且存在如下疑点。

  1. 如果定时任务处理的只是周六或者当天的数据,那应该过了当天或者周六就不会再次出现了。为什么每周六都出问题?难道恰好每到周六都出现异常数据?显然不可能。
  2. 如果定时任务处理的是非时间条件的数据,那重启之后应该还是会查询到相同的数据。但实际是当天重启之后程序就运行正常了。
  3. 如果是用户每周六凌晨都在做相同的操作引发了这个问题?通过日志分析排除了这个可能,而且就算做也不可能每周六指定时间做的。

基于上述原因,基本排除了是业务程序的问题。因为以我们目前的认知,想要通过一段业务程序来产生这样的问题是基本不可能的。

性能问题排查

接着我们开始怀疑是不是内存溢出或者线程死锁等性能问题引起的。
期间找了技术大牛,还在Oracle Support官网的工程师。给Agile应用加了如下java启动参数:

# java内存溢出时自动导出dump文件
-XX:+HeapDumpOnOutOfMemoryError 
-XX:HeapDumpPath=/var/log/java.hprof 
-XX:ErrorFile=/var/log/hs_err_pid<pid>.log

# 开启飞行记录器
-XX:+UnlockCommercialFeatures -XX:+FlightRecorder 

# 启用JMX
-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=9899 
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.ssl=false

使用了上述方式之后依然没有发现异常日志。dump文件也没有导出。所以基本可以断定Agile没有内存溢出。而且如果是程序性能问题引起的java进程崩溃,应该会在某个特定的业务场景下触发,但我们的这个问题只有每周六2点出现,当天重启起来后又一切正常。所以性能问题原因也被排除掉了。

其他程序干扰

这个时候我们开始怀疑Agile进程是不是被其他程序干扰了才异常退出的?
查了服务器上运行的其他程序。用了history,demsg, top -c,uptime等命令搜索,还是一无所获。
还尝试了让客户运维团队停止所有监控软件,但到了周六,问题仍然发生。

重要线索发现

在排查日志时,在/var/log/secure日志里面找到了重要的线索。
每当agile应用进程被异常关闭的同一个时间点都会打印这样一些日志:
session closed for user root在这里插入图片描述这些日志是哪个程序输出的,目前还没人能确定。看英文意思就是root的session被关闭了,这个root应该是linux的用户。
然后我们突然注意到每次到周六要重启agile应用的时候,都会发现xshell被关闭了,要重新连接。
和客户沟通中发现,他们公司的电脑是使用云桌面登录使用的,而且每周六凌晨都会重启。
这个时候我突然想起在另一个项目上遇到的另一个问题,就是只要使用xshell或者其他支持X11 forwarding的ssh客户端启动Agile应用后,只要xshell关闭,agile应用进程就会自动关闭。
怀着这些疑问,我在环境上做了针对性测试,终于找到了这个问题真正原因。

真正原因

如下原因必须同时满足才会发生这个问题。

  1. 使用支持X11 forwarding的ssh客户端连接linux并且启动Agile应用进程。
  2. 将环境变量DISPLAY指向当前客户端的IP,且没有重置。
  3. ssh客户端关闭。关闭的方式有很多种,直接手动关闭或者被其他应用关闭。
    • 在这个案例里面,客户的云桌面每周六凌晨重启时就会关闭XShell
    • 直接手动关闭XShell也会触发这个问题。

解决方案

针对问题原因,只有任意一个原因不满足就不会引发这个问题。也就是说,下面任意方法都能解决此问题。

  1. 使用不支持X11 forwarding的ssh客户端连接linux并且启动Agile应用进程。
    • 例如:putty,但需要注意的是,putty也有x11插件。
    • 某些堡垒机自带的ssh工具也不支持X11 forward
  2. 使用修改DISPLAY变量的客户端执行 unset DISPLAY
    • 不确定如果在其他客户端上执行unset命令能否解决此问题。
    • 本文案例使用的是相同客户端
  3. 前面2个原因都满足,已经用了X11的客户端启动Agile应用,那就要确保客户端的SSH工具要一直开着,不要关闭。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/684521.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UDS通信服务解析

InputOutputControlByIdentifier (0x2F)----通过ID对输入输出进行控制 2F的03子功能是"暂时接管控制权" ReadDataByIdentifier(0x2A)—通过ID读取数据或特定器件状态 ClearDiagnosticInformation(0x14)—清除故障诊断信息 UDS规定用FF FF FF表示所有种类的DTC Rou…

技术干货 | 开始使用 Redis

Redis 是一个使用 C 语言编写的开源、BSD 许可、高级的键值存储&#xff0c;。它也被称为数据结构服务器&#xff0c;因为键可以包含字符串、哈希、列表、集合和有序集合。本教程将介绍使用 Redis 所需的基本概念。Navicat Premium 和 Navicat for Redis 现已支持 Redis, 如果你…

【AUTOSAR】AUTOSAR开发工具链(十一)----基于BTC的back to back测试操作说明(3)

四、PowerWindow demon BTB测试 1、对于MBD生成代码&#xff0c;可以通过上文中使用Embeded-Coder的方式添加工程文件&#xff0c;然后切换到back to back 测试模式 2、点击Generate Stimuli Vectors &#xff0c;进入自动生成测试用例 选择测试用例的生成引擎 设置信号的使用…

2021年国赛高教杯数学建模D题连铸切割的在线优化解题全过程文档及程序

2021年国赛高教杯数学建模 D题 连铸切割的在线优化 原题再现 连铸是将钢水变成钢坯的生产过程&#xff0c;具体流程如下&#xff08;图 1&#xff09;&#xff1a; 钢水连续地从中间包浇入结晶器&#xff0c;并按一定的速度从结晶器向下拉出&#xff0c;进入二冷段。钢水经过…

js中几种实用的跨域方法原理详解

一、通过jsonp跨域 在js中&#xff0c;我们直接用XMLHttpRequest请求不同域上的数据时&#xff0c;是不可以的。但是&#xff0c;在页面上引入不同域上的js脚本文件却是可以的&#xff0c;jsonp正是利用这个特性来实现的。 比如&#xff0c;有个a.html页面&#xff0c;它里面…

微服务系列文章之 Springboot集成Jersey

​ Springboot支持Jersey1.x和Jersey2.x&#xff0c;我们这里只介绍Springboot对Jersey2.x的支持。springboot对jersey的集成非常简单。 ​ 项目结构&#xff1a; 1、引入Springboot对Jersey的starter包 <dependencies><dependency><groupId>org.springfram…

(一)python实战——使用Pyinstaller打包一个python的exe可执行文件

前言 在python编程中&#xff0c;我们往往需要将我们的应用程序打包成一个可执行文件&#xff0c;方便使用。如果是单独的python文件&#xff0c;其他人使用前必须要先安装python环境&#xff0c;在python环境中通过命令执行我们的python程序。本节内容我们主要介绍一下使用Py…

团体程序设计天梯赛-练习集L2篇⑥

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;Hello大家好呀&#xff0c;我是陈童学&#xff0c;一个与你一样正在慢慢前行的普通人。 &#x1f3c0;个人主页&#xff1a;陈童学哦CSDN &#x1f4a1;所属专栏&#xff1a;PTA &#x1f381;希望各…

数据结构--算法时间复杂度

数据结构–算法时间复杂度 在计算算法时间复杂度的时候&#xff0c;我们可以忽略表达式某些部分。 eg&#xff1a; T 1 ( n ) 3 n 3 T_1(n) 3n 3 T1​(n)3n3 ⇒ O ( n ) O(n) O(n) T 2 ( n ) n 2 3 n 1314 T_2(n) n^23n1314 T2​(n)n23n1314 ⇒ O ( n 2 ) O(n^2) O…

【嵌入式烧录/刷写文件】-S19文件解析(首行数据解析)

目录 一、概述二、S19文件解析三、举例 一、概述 &#xff11;.概述&#xff1a; Motorola S-record是一种文件格式&#xff0c;由摩托罗拉在20世纪70年代中期为Motorola 6800处理器创建&#xff0c;以ASCII文本形式传达二进制信息的十六进制值&#xff0c;其文件格式也可能为…

Microsoft Fabric 学习----- Lakehouse vs Warehouse

做了几年Power BI 开发人员&#xff0c;微软最近上发布了Microsoft Fabric, 对它的研究安排起来! 从微软官方中文文档入手 Microsoft Fabric 中的端到端教程 - Microsoft Fabric | Microsoft Learn Microsoft Fabric 是将 Power BI、Azure Synapse 和 Azure 数据资源管理器中…

十款好看简洁的个人引导页html源码

资源详情&#xff1a;十个 引导页介绍页html源码下载使用方法 怎么让源码更适合你&#xff1f;改造 一、 介绍&#xff1a; 好看自适应导航网站发布页网页html源码&#xff01;自适应电脑手机 这是一个网页单页源码&#xff01;&#xff01; 模板无后台模板&#xff0c;上传…

基于51单片机设计的计算器

一、项目介绍 计算器是一种常见的电子产品,广泛应用于各个领域。而基于单片机的计算器设计则是学习单片机的一个重要环节。本项目基于STC89C52单片机设计了一款基本的四则运算计算器。 项目里采用了单片机的IO口、定时器和LCD1602显示屏等技术原理。其中,IO口用于控制矩阵键…

大数据技术的未来发展趋势怎么样?

所谓大数据技术&#xff0c;就是对海量数据进行科学分析和有效处理的一种先进技术形式。该技术的优点主要在于可以对各种风格、类型的海量数据进行处理。相较于网络数据的传统处理技术&#xff0c;大数据技术的应用不仅可以实现数据处理量显著扩大&#xff0c;还可以实现各种复…

#10034. 「一本通 2.1 例 2」图书管理

10034. 「一本通 2.1 例 2」图书管理 题目描述 图书管理是一件十分繁杂的工作&#xff0c;在一个图书馆中每天都会有许多新书加入。为了更方便的管理图书&#xff08;以便于帮助想要借书的客人快速查找他们是否有他们所需要的书&#xff09;&#xff0c;我们需要设计一个图书…

ModaHub魔搭社区:安装、启动 Milvus 服务(GPU版)教程

目录 安装、启动 Milvus 服务 安装前提 操作系统 硬件 软件 确认 Docker 状态 拉取 Milvus 镜像 下载并修改配置文件 启动 Milvus Docker 容器 常见问题 接下来你可以 安装、启动 Milvus 服务 CPU 版 Milvus GPU 版 Milvus 安装前提 操作系统 操作系统 版本 Ce…

TOGAF10®标准中文版--(阶段C —数据架构阶段B )方法

6.5 方法 6.5.1 数据结构 数据架构应该能够处理&#xff1a; 静态数据——存储中的数据动态数据——事务或服务/API 中的数据使用中的数据——应用边界的数据&#xff08;例如&#xff0c;GUI&#xff09;开放数据——组织提供给公众使用并且自愿或合法要求提供的数据 将添…

创业史|苏萌:我与百分点科技的故事

编者按 苏萌曾是北京大学光华管理学院营销学教授&#xff0c;在学术领域崭露头角时&#xff0c;他毅然辞去教职&#xff0c;创立了百分点科技。百分点科技是一家服务全球政府和企业的大数据软件及解决方案提供商&#xff0c;主要从事数据科学基础软件与应用软件的研发与服务。一…

业务创新的利器:探索Flutter与小程序容器的融合应用

Flutter是由谷歌开发的开源用户界面&#xff08;UI&#xff09;工具包&#xff0c;用于构建跨平台移动应用程序、Web应用程序和桌面应用程序。它采用一种现代化的方式&#xff0c;使用单一代码库可以同时构建iOS和Android应用&#xff0c;并且能够实现高性能、高保真的用户界面…

国产十大骨传导耳机品牌,分享几款实战性高的国产骨传导耳机

骨传导耳机在运动过程中不需要通过耳部进行传音&#xff0c;所以佩戴舒适度高&#xff0c;而且不会像入耳式耳机那样堵住耳朵&#xff0c;导致耳部的不舒适感&#xff0c;并且可以清晰的听到外界声音。骨传导耳机适合于户外运动、骑行、跑步等运动场景。此外&#xff0c;骨传导…