# 问题分析引导

# 一、性能问题分析

# 1. 抓取慢请求

分析性能问题时,尤其是某个功能的性能问题,可以先抓取慢的请求地址

# 1.2 PC端:

  • 使用浏览器 F12 开发者工具抓取慢请求

  • 使用Fiddler工具抓取慢请求

# 1.3 移动端:

  • 移动端可以使用Fiddler工具抓取慢请求,Fiddler详细使用方法见文档:

  • 部分H5页面功能,可以使用浏览器开发者工具(F12)的设备模拟按钮,直接在pc端浏览器复现抓取

# 1.4 慢请求分析

当抓取结果发现,大量慢请求都是css、js、图片等静态资源时,很大概率是网络引起; 对于这些资源请求,基本不涉及代码逻辑,可能是安全设备或者网络带宽等影响,建议联系客户网络管理员一起分析,如下图

1737091066964.png

# 2. 判断是否网络问题

# 2.1 服务器本机测试

如果服务器是windows系统或带图形化界面,可以直接到服务器上,打开浏览器,通过 http(s)://127.0.0.1/seeyon/main.do 地址访问测试功能,是否也存在客户端一样的慢现象

# 2.2 同网段服务器测试

如果服务器没有图形化界面,无法直接在浏览器访问 http(s)://127.0.0.1/seeyon/main.do,那么可以找一个与服务器相同网段,且带有图形化界面的机器来访问测试 注意:同网段是指在同一个交换机下的,比如:都属于 192.168.0.0/24 这个网段下的 如果确实没有同网段机器,尽量寻找一个同样内网不经过任何防火墙的机器测试,尽量减少跨网段、防火墙的影响 测试结果如果OA不慢,那大概率还是网络因素影响

# 2.3 服务器本机命令行测试

通过curl命令模拟浏览器请求,访问 http(s)://127.0.0.1/seeyon/main.do 测试是否缓慢 命令参考:curl -XGET -I -k -H "Cookie:xxxxxx" http(s)://127.0.0.1/seeyon/main.do?xxx1=xxx1&xxx2=xxx2 如果模拟测试结果耗时很短,基本可以判断是网络问题影响

# 2.4 分析capability日志

根据客户端复现时使用的用户账号,客户端IP,以及抓取的慢请求地址接口,检查对应后端OA节点的capability.log日志 通过对比时间、登录名、IP地址、以及接口方法,检查该条请求记录在后端OA的耗时与客户端是否基本一致 如果日志中的请求耗时很短,客户端请求很慢,那可以明确是网络问题;如果日志中后端耗时也很长,那就是OA慢。

# 2.5 Nginx开启access日志

请参考Nginx文档中开启access日志的方法,对比同一请求中的 $request_time 和 $upstream_response_time 两个数据是否差异很大。

# 2.6 服务器端抓包分析

提示:使用抓包工具分析时,建议针对http请求抓取,https请求涉及加解密过程,相对繁琐

使用前,请先安装好相应工具

  • Linux: 使用tcpdump工具
# 参考命令
tcpdump -i 网卡名<eth0> tcp port 端口号<80> -w 文件名<oa.pcap>

从服务器取出生成的抓包文件oa.pcap,拷贝至windows系统上,通过wireshark工具打开进行分析

1737092756597.png

1737092965116.png

  • Windows: 使用wireshark工具

打开wireshark,选择对应的网卡,工具将自行开始抓包

1737092544042.png

# 3. 非网络问题

首先通过上文方法排查后,获取到慢请求url

# 3.1 单个或几个功能慢

通过手动抓取dump分析,见dump抓取方法

# 3.2 所有功能都慢

  • 登录OA系统管理员账号,系统维护-系统监控,检查监控页数据

# 3.3 进程在,已无法正常登录

  • 导出线程堆栈 jdk/bin/jstack OA进程号 > threadDump.txt

  • 检查堆内存使用率 jdk/bin/jstat -gcutil OA进程号

  • 堆内存老年代使用高的情况下,导内存dump jmap -dump:format=b,file=oa_mem_dump.bin OA进程号

  • 检查服务器资源使用率

# 二、宕机问题分析

宕机问题是指OA运行过程中突发进程异常退出的情况

# 1. 有宕机文件生成

# 1.1 .hprof文件

该文件属于内存溢出生成的dump文件,可以直接通过mat工具分析

# 1.2 hs_err_pid_xxxx.txt文件

直接使用编辑器打开,查看宕机原因

# 1.3 coredump文件或者.mdmp文件

无法直接分析,建议从其他方面入手

# 2. 无宕机文件生成

  • 检查操作系统日志 Windows事件查看器 或 Linux message日志

  • 检查安全软件日志,是否有拦截信息等,频繁出现可以尝试卸载观察

  • 全盘扫描杀毒

    编撰人:wangyxyf