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

news/2024/11/17 7:20:13/

问题现象

  • 每周六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.ppmy.cn/news/568071.html

相关文章

【Linux命令】su sudo

sudo Super user do 超级用户do su Shift/Switch user 切换用户 1. su su命令是当前用户用来切换到另一个用户的命令&#xff0c;参数为用户名。执行时会要求输入密码&#xff0c;这个密码是你要切换到的用户的密码。 注意&#xff0c;当你是root用户是&#xff0c;切换到本…

IBM MQ常用的命令

概念理解&#xff1a; 1、通道&#xff1a;指MQ访问的一个物理API接口&#xff0c;因为MQ都实现了JMS协议&#xff0c;底层走的是SOCKET&#xff0c; 而通道就是封装了协议和操作SOCKET的一个接口&#xff0c;我们连MQ的时候&#xff0c;没有显示的声明SOCKET连接等&#xff0…

IBM-MQ原理及使用场景

一、MQ简介及特点 MQ全称为Message Queue, 消息队列&#xff08;MQ&#xff09;是一种应用程序对应用程序的通信方法。应用程序通过写和检索出入列队的针对应用程序的数据&#xff08;消息&#xff09;来通信&#xff0c;而无需专用连接来链接它们。消息传递指的是程序之间通过…

IBM MQ部分知识点梳理

IBM MQ的优点和缺点&#xff1f; - 优点&#xff1a; ①IBM MQ支持数据加密&#xff0c;安全性较高。通过TLS对发送的每条消息加密。 ②使用方便。 - 缺点&#xff1a; ①存在"消息优先级"和"客户隔离"问题。IBM MQ并未严格遵循"FIFO"规则来分发…

ibmmq 通道命令_ibm mq常用命令

近期做系统迁移,把阿里云上的系统迁移到客户的数据中心。对系统做了相应的改造,其中短信功能从调用第三方服务改为了交行的服务号码。交行的短信接口需要涉及到消息队列MQ,在使用时整理了些常用的脚步。 查看版本 $dspmqver 队列管理器 显示队列管理器 $dspmq (显示所有) $d…

IBM CDC

一、企业面临的困境 当前IT系统的软硬件迭代越来越频繁&#xff0c;特别是软件产品&#xff0c;客户生产系统中采用的软件都面临原厂的EOS风险。EOS即End Of Support&#xff0c;这是每个客户的IT部门都要面临的运维风险。当生产系统出现问题却又得不到原厂售后服务支持的时候…

IBM MQ消息的传递过程

来&#xff0c;让我用接地气的、通俗的语言描述一下IBM MQ消息的传递过程。 JAVA的&#xff0c;每个字描述都很严谨&#xff0c;有问题欢迎指正&#xff0c;欢迎交流。 消息从A系统【10.10.10.1】 单向传递到B系统【10.10.10.4】的过程。B到A的按相反的配置&#xff0c;不描述…

IBM MQ简介

IBM MQ share 1.什么是MQ MQ&#xff08;Message Queue&#xff09;消息队列&#xff0c;是基础数据结构中“先进先出”的一种数据结构。一般用来解决应用解耦&#xff0c;异步消息&#xff0c;流量削锋等问题&#xff0c;实现高性能&#xff0c;高可用&#xff0c;可伸缩和最…