JavaWeb在线问题.系列博文入口

你解决过线上问题吗?

 你能挑选一个你解决过的线上问题说说吗?

你搞过JVM调优吗

这种问题,快成八股文了,这类问题考察的是解决问题的思路,linux,jdk,以及其他检测和解决问题的工具。可解决实际问题,不仅仅是表面上的这些,还得是你对jvm,linux系统,组件原理的理解。估计是个开发都解决过这类问题,可正真能有几人有机会接触到jvm,系统痛点的解决,且不说有没有能力,很少有这样的机会接触到,既然问道也不能说没接触过,那就得挑选一个有代表性问题拿出来说说。哪怕这个问题是网上copy来的。实际线上问题解决都是起于功能,可面试跟实际解决问题不同,他不愿意听你的逻辑分析,只想听听问题核查的那些技术和工具(这类问题越是小地方越严重)。

如果不为了面试,日常工作也需要有针对线上问题的解决思路,这样遇到问题就能有“法”可依,心里有“法”就不会慌张,这个法子是总结多少年多少人解决在线问题的思路总结而来

架构图

JavaWeb在线系统问题核查-Java文档类资源-CSDN下载 (原图下载地址)

系列博文

下面会针对此类问题从思想,步骤,技术,工具,团队协作 几个方面挨个介绍。

JavaWeb在线问题.分析实例_闲猫的博客-CSDN博客

JavaWeb在线问题.Linux服务器CPU核查_闲猫的博客-CSDN博客

JavaWeb在线问题.Linux服务器MEM内存核查_闲猫的博客-CSDN博客

JavaWeb在线问题.Linux服务器磁盘Disk核查_闲猫的博客-CSDN博客

JavaWeb在线问题.Linux服务器网络核查_闲猫的博客-CSDN博客

JVM命令:jsp(找进程),jstack(线程栈),jmap(内存),jinfo(参数)_闲猫的博客-CSDN博客

Dump文件生成,内容,以及分析_闲猫的博客-CSDN博客

Mysql.慢Sql_闲猫的博客-CSDN博客

线上突然查询变慢怎么核查_闲猫的博客-CSDN博客

待补充...

在线问题步骤

1. 问题现象

无论是开发,还是业务,产品,测试都有必要了解 遇到一个问题需要验证哪些方面。稍微遇到不满足需求就直接抛出开发很不友好的,不利于问题解决和团队协作。

遇到问题需要确认是功能报错,卡顿,还是请求超时。这些对问题的核查有很大的帮助。

报错,页面出现了乱码提示,或者用F12查看到报错日志;   

卡顿,页面明细卡顿,卡顿是一直慢还是一会慢一会正常,这种卡顿是刚开始就这样,还是啥时候才开始卡顿的

超时,页面突然超时,多次点击也没反应,本机机器运行正常,风扇转动也不快,系统突然慢。或者系统某个功能一直超时

2. 问题确认

搞清楚问题什么现象后,还需要确认一下问题。最基本的是需要排除是自己笔记本和网络导致的问题。其次需要确认类似功能是否好着,问题是一直这样,还是重启浏览器就好了。能做到如此的测试,业务都是很优秀了,对接开发一定会很和谐。开发不讨厌问题,讨厌抛问题的做法。这些需要从文化方面让大家认可在共同解决问题,针对甩责任行为进行批评;通用为了在体能上对业务,测试,产品等进行通识技能培训。

方法:1. 比对类似功能是否有问题;2. 重复测试是否重现

结构:一类问题就首先定位共同依赖功能;个例问题就分段分析

3. 分段核查

这就是开发自己的事情了,但如果是测试,产品,项目经理需要能 根据不同开发角色粒度,如果前后端,需要将问题定位到是前端还是后端问题,如果时下不确定可以直接发给前端。

思路:先粗调再微调(先确认大的范围,然后逐渐拆分核查)

示例:BS架构分格,前后端,后端和数据库,第三方依赖

团队协作:首先确定谁的问题,再找谁来解决

手段:http请求和结构;客户端测试DB,Redis等第三方中间件;浏览器Console日志; 后端日志,APM系统辅助(如链路追踪系统)

4. 问题主体

确认是哪部分出问题了,前端逻辑,后端代码,服务器宕机,第三方组件等

逻辑:根据代码逻辑判断,或者根据日志定位问题出在哪

服务:服务器好的,Server提供服务出了问题(如慢,卡顿,超时响应)

服务器:Cpu,内存,磁盘,网络(如:宕机,cpu内存使用率超高,网络不通,磁盘满了)

第三方组件

5. 逻辑出问题

手段:使用日志核查;流量回放;测试账号重试;链路追踪

可能问题:逻辑不完善;逻辑容错性差,垃圾数据影响; 特殊场景没有被考虑到

6. 服务出问题

现象:访问变慢,速度不稳定(需要排除网速问题),长时间不响应,连接超时,刚启动好的用了一段时间变慢,重启后又好了

步骤:确认Server是罪魁祸首;分析是否哪个线程导致; 单线程有问题解决,没问题需要看是否线程直接竞争资源导致,即分析多线程问题

WEB Server确认: 服务CPU高并不一定一定是Server导致,也可能是其他辅助服务,需要根据top命令确认

单线程问题定位: 根据进程PID列线程列表top -Hp PID;  jstack 打印占用资源较多线程代码位置

多线程问题定位:jstack快照所有线程;dump导出;使用jvisualvm分析dump文件

JVM分析:日志开启;GC日志打印;GC分析

7.服务器问题

现象:CPU使用率高;内存使用率高;磁盘满生成文件失败;连接第三方接口超时或者失败;

服务器和服务的关系:服务逻辑有问题可能会导致服务器CPU,内存使用率超高;表面解决可提升服务器性能缓解,但需要从根上解决还得从服务入手

磁盘问题
        问题分类
            磁盘容量 df ;du 
            IO速率 iostat,vmstat; lsof查看进程打开的文件
        导致问题场景
            日志
                日志没有定时删除,提前做好日志策略
            临时文件
                上传的临时文件没有删除或者并发太高
                上传文件的逻辑控制
网络问题: 较少,检测出来一般你也解决不了,需要网络工程师介入

CPU,MEM:top,free -h

8. 团队协作

团队角色:客户,业务(对接客户), 项目组接口人,测试,前端,后端,DBA,运维

客户,业务(对接客户),项目组接口人,测试:确认问题,正确描述问题,问题分类

协作:Jira规范问题提交,定位,解决流程;规范问题分类,解决时限;问题升级需求流程; 跨团队协作机制

解决问题不止是技术的问题,同时会体现企业文化,组织治理能力,团队成员关系等方面,为了能高效的解决问题就需要在这些方面进行早期铺垫,临时抱佛脚是没有的。


END

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闲猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值