# 问题分析引导
# 一、性能问题分析
# 1. 抓取慢请求
分析性能问题时,尤其是某个功能的性能问题,可以先抓取慢的请求地址
# 1.2 PC端:
使用浏览器 F12 开发者工具抓取慢请求
使用Fiddler工具抓取慢请求
# 1.3 移动端:
移动端可以使用Fiddler工具抓取慢请求,Fiddler详细使用方法见文档:
部分H5页面功能,可以使用浏览器开发者工具(F12)的设备模拟按钮,直接在pc端浏览器复现抓取
# 1.4 慢请求分析
当抓取结果发现,大量慢请求都是css、js、图片等静态资源时,很大概率是网络引起; 对于这些资源请求,基本不涉及代码逻辑,可能是安全设备或者网络带宽等影响,建议联系客户网络管理员一起分析,如下图
# 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工具打开进行分析
- Windows: 使用wireshark工具
打开wireshark,选择对应的网卡,工具将自行开始抓包
# 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
快速跳转
