Linux稳定性知识体系
这个知识体系的话是嵌入到我对于稳定性问题的理解上来讲的,具体来说就是稳定性的知识体系是如何运用到我们的工作中的。
主要也是对这段时间工作的认识和总结
概述
什么是稳定性问题(是什么)
影响系统稳定,导致系统出现问题的问题。
从现象上来说,不能确定是问题模块,或者非必现的模块问题
扩展 -》 什么问题都可以指给稳定性,殴打稳定性,简单来说就是其他模块解决不了的或不愿意解决的就是稳定性问题
一般来说问题最终的根本原因总会落在一个具体的模块,我们要做的就是分析出问题根因,或指出相关模块,尽可能给出解决意见
常见问题(做什么)
死机重启问题
一般是系统发生dump,一般要结合db log, kernel log,mobile log分析问题根因
原生代码问题
Android原生代码也是有bug的,因为这部分代码没人动,也就很少有人研究。最后又归到稳定性上。
这种问题可能要修改镜像调试
性能问题
有时性能问题也会归到稳定性上,例如正常情况下某应用启动很快,在某种情况下启动很慢,这很可能就是性能导致的。我认为性能问题和稳定性问题不能混为一谈,二者的分析方法有很大差别。
这种问题一般要结合工具进行调试
非必现问题或者不知道怎么复现的问题
这种问题还可能伴随着抓不到log等问题,有的时候比较难跟进
没人愿意深入研究的问题
各模块都不承认是自己的问题,相互扯皮。因为没有人从系统角度上来分析问题,也不进行深入研究,觉得还是归到稳定性好些
如何处理(怎么做)
对于Linux稳定性问题,一般来说,先根据log分析问题原因,如果原因不太清晰,就需要结合工具进行调试,如果怀疑某些模块有问题,可能还要修改相关模块并验证,最后如果还是没有思路,就要寻求帮助了
分析
分析问题,需要对linux的基本的工作机制有一定的了解,例如
进程管理
进程调度
内存管理
文件系统
调试
crash,ftrace,kmemleak,kprobe,kgdb,trace32,perf,procfs,sysfs,debugfs
gdb,strace,ltrace,Valgrind,gprof,mtrace,iperf,blktrace,fio
验证
通常我们需要增加log或者修改代码去验证问题
我们需要对Linux应用开发有相关了解
系统调用
IPC通信
进程和线程
常用的库
辅助系统的工作原理
网友评论