如何排查问题--服务端
介绍下,服务端出现问题时,排查问题定位原因的一些思路。
业务层---应用层---资源层
业务层
相关功能的逻辑代码。
完善的日志。
log、metric、trace。
一些命令:grep、tail、head、sed。
应用层
系统的架构图。
配置是否正确。
进程间的数据流向。
进程的运行状态。
一些命令:ps、pidstat、pstack、lsof、netstat、tcpdump。
资源层
Mysql、Redis等云服务的运行情况。
Mysql方向:show processlist、slow log、explain。
Redis方向:info stats、big key。
主机的cpu、io、mem、disk等信息。
一些命令:top、iostat、free、df、vmstat、uptime。
监控
监控是一个更高层次的做法。
日志监控、业务监控、基础监控。
监控和代码一起做,降低未来修复问题的代价。
监控可以根据历史曲线找到问题出现的规律。
问题产生后,需要第一时间定位原因。
跟踪与复盘
持续跟踪维护问题清单。
比较典型的问题,及时复盘。