引言

业务中断了!

老板咆哮,主管抓狂,而你就是那个要去处理故障、恢复业务的不幸的人。

你独自一人在阴暗的隔间里。北边是老板的办公室,西边是Team Leader的办公室,南面是茶水间,在那你能泡上一杯热咖啡。问题没有一点进展,你郁闷地盯着显示器。这时,电话再次响起,你不用接听也已知道又是一通抱怨用户连接不上服务器的电话,因为就在半小时内,已经有四通电话催问你进展了。

你将会怎么做?泡一杯咖啡准备通宵苦战?此时,或许你的心底也充满无奈:

Linux服务器上部署的业务出现中断时,为快速处理问题、消除故障,避免以上苦逼的剧情发生,我们可以做哪些准备吗?

工欲善其事,必先利其器

Linux自身以及开源社区已经提供了很多工具,帮助我们快速定位问题。我们需要做的,就是在故障发生之前,确保机器上安装了这些工具,并进行适当的配置,使其正常运转,下面列举几个常用的问题诊断工具。

syslog/syslog-ng  记录系统服务进程和操作系统本身的日志,我们可以对日志输出的内容、输出到哪些文件进行配置,利用这些日志,可以查到诸如机器重启时间、命令执行记录等信息,查看/var/log/messages里记录的一些异常信息,往往是我们处理问题的第一步。

 

strace  跟踪进程运行过程中产生的系统调用,当程序、命令执行挂死或缓慢时,我们可以通过分析相关系统调用信息,缩小问题范围、查找故障原因。

 

atop  通过定时采样系统资源使用情况、进程运行状态,为我们提供了较全面的操作系统信息。

 

LKCD/kdump  是一种内核转储机制,当系统发生kernel crash时,它将寄存器中的值、内存中的堆栈信息保存到磁盘中,形成的vmcore文件提供了crash时间点所有进程的状态、内存的使用情况等信息,根据寄存器的值,我们甚至能找到内核中相应的代码进行分析。

除以上所列,ping、ps、lsof、dmesg等查询命令也被经常用到。

现在,我们面前摆放着各式各样、功能不同的工具,有了这么一个强大的工具套件,是否意味着来一个问题我们就能解决一个,来两个问题我们就能消灭一双呢?

非也。仅仅拥有齐备的问题诊断工具是远远不够的,更需要我们掌握怎么使用(How)以及什么时候(When)使用这些工具、熟悉Linux操作系统本身,甚至需要深入了解Linux内核源码。是否能解决、快速解决Linux故障问题,取决于问题处理人员的技能水平。

问题处理与个人能力提升

当故障发生时,尽早恢复业务固然重要,但对个人而言,恢复业务并不是目的,更多地是通过处理问题过程提升自己的技能。进行Linux服务器相关故障处理的时,我们需要考量以下几方面:

  1. 快速解决问题
  2. 提升自身技能
  3. 向高人求助

某年某月某日,一个系统启动过程中挂死的问题需要你处理,这时恰好你身边就有一位Linux专家,他对系统启动过程了如指掌。这时你有两种选择:

1.  问Linux专家,问题立马可以得到解决

2.  查阅相关资料,自己解决问题

如果你尝试依靠自己的能力解决该问题,或许你需要花费很多时间和精力,查阅很多介绍Linux操作系统启动过程的资料,但因此你也了解了各个启动阶段的功能、对应加载的服务项,甚至能学到在不同启动阶段挂死的恢复处理方法。

相比直接使用google搜索答案或问相应专家,独立解决问题,即使问题最终没能靠自身力量得到解决,但学习和独立思考的过程也让自身的技能得到了提升。

但也并非所有问题都有必要作深入研究,当问题属于以下类型:

  1. 十分紧急,稍有延误就会带来重大损失
  2. 非自身发展领域相关

那我们不妨采取另一种策略,google之,或找相关领域的专家迅速地将问题解决。

问题处理参考方法

现在你手头有很多可用于问题诊断的工具,你也认识到可以通过独立处理问题,来提升自身技能,接下来就真正进入问题处理环节咯,具体怎么进行问题处理呢?

首先我们需要收集问题相关的信息:

1.问题现象

处理问题之前,首先得了解清楚问题现象。

  业务出现异常,是响应慢还是完全没有响应?

  主机僵死,能否ping通?能否进行终端切换?是crash还是hang?

 

2.发生时间

如果问题发生的时间有一定规律,这时我们可以通过排查系统的定时任务,从而找出问题根因;另外,根据时间点我们可以迅速找到相关日志,减少查找日志花费的时间。

 

3.做过哪些操作

安装了补丁包?修改了系统配置参数?了解问题出现之前做了什么操作,能为我们处理问题提供指引。

 

4.OS相关信息

利用工具可收集问题出现时间点CPU负载、内存利用、磁盘IO、网络收发包等OS信息,这些信息为我们提供了较为全面的参考。

为了全面地收集OS信息,需要执行很多命令。这时,可以将这些命令集合到一个脚本中,利用脚本进行信息收集,节省了输入命令的时间,对于无法自行登录的远程服务器,使用脚本收集更显便捷。

总之,信息收集越全越好。即使自己找不出问题根因,后续向他人求助时,也不会因为缺少日志信息而犯愁。

了解了问题现象,又有了日志信息,那我们就可以结合日志对问题进行分析了。

首先判别问题类型、缩小问题范围:

  是硬件问题,还是软件问题?

  是业务进程层面的,还是系统层面的?

  CPU、内存、网络、磁盘,哪一方面出现异常?

对于可复现(reproducible)的问题,我们可搭建环境进行问题复现,在实验环境中对问题处理方法进行验证,可降低对现网环境的影响;对于复杂地、不可复现的问题,我们就得做好长期作战的准备了,除了收集以上所列信息外,还需记录问题处理的过程、尝试过哪些处理方法等,这样,当有其他人参与进来一同处理该问题的时候,就能更快速地熟悉问题情况。

小结

本文讨论了Linux故障处理的方式方法。能否顺利解决故障,首先取决于我们的技能水平,其次需要依靠各种问题诊断工具。处理问题的过程可以与个人技能提升很好地结合起来,好的处理方式需要经验的积累,但个中也有规律可寻。

从提升个人技能的角度出发,即使面对紧急问题,我们也能变得更加淡定和坦然。再有业务中断情况,老板、主管都还在抓狂,但你...

Reference: Self-Service Linux

Linux故障处理最佳实践的更多相关文章

  1. paip.java win程序迁移linux的最佳实践

    paip.java win程序迁移linux的最佳实践 1.class load路径的问题... windows哈第一的从calsses目录加载,,而linux优先从jar加载.. 特别的是修理了ja ...

  2. 【转载】Linux小白最佳实践:《超容易的Linux系统管理入门书》(连载六)Linux的网络配置

    本篇是Linux小白最佳实践第6篇,目的就是让白菜们了解Linux网络是如何配置的.Linux系统在服务器市场占有很大的份额,尤其在互连网时代,要使用计算机就离不开网络. 想每天能听到小妞的语音播报, ...

  3. Linux小白最佳实践:《超容易的Linux系统管理入门书》(连载五)Linux系统的对话方式

    本篇是Linux小白最佳实践第5篇,目的就是让白菜们了解Linux进程之间是如何对话的.之前连载的几篇,在微信上引起了很多的反响,有人也反映图多文字少,感觉没有干货.本篇选了大部分是实战讲解的&quo ...

  4. 【转载】绝对干货!Linux小白最佳实践:《超容易的Linux系统管理入门书》(连载九)如何通过源代码安装软件

    除了使用Linux的包管理机制进行软件的安装.更新和卸载,从源代码进行软件的安装也是非常常见的,开源软件提供了源代码包,开发者可以方便的通过源代码进行安装.从源码安装软件一般经过软件配置.编译软件.执 ...

  5. 【转载】干货再次来袭!Linux小白最佳实践:《超容易的Linux系统管理入门书》(连载八)用命令实现批量添加用户

    Windows添加用户需要至少5个界面,而Linux一条命令就搞定了,这是不是高效人士办公第一法则呢.本文不给你一堆参数和选项,不让你见识教条主义,只给你最实用的代码. 想每天能听到小妞的语音播报,想 ...

  6. 【转载】干货来袭!Linux小白最佳实践:《超容易的Linux系统管理入门书》(连载七)LAMP集成安装

    学Linux做程序开发也好,做系统管理也好,做网络管理员也好,做系统运维也好,不会LAMP和LNMP,那就等于连皮毛都不会!本篇是文字版的LAMP集成安装,下次连载我们要介绍LNMP的文字版安装.有喜 ...

  7. 超大文件上传到Azure Linux虚拟机最佳实践

    客户在实际进行迁移的时候,往往碰到需要将本地数据中心的超大文件,比如单个200GB的文件,或者总共1TB的无数文件上传到Azure上的情况,尤其是传到Azure的Linux虚拟机的场景,这种场景包括: ...

  8. 《DevOps故障排除:Linux服务器运维最佳实践》读书笔记

    首先,这本书是Linux.CN赠送的,多谢啦~ http://linux.cn/thread-12733-1-1.html http://linux.cn/thread-12754-1-1.html ...

  9. [转帖]12条用于Linux的MySQL/MariaDB安全最佳实践

    12条用于Linux的MySQL/MariaDB安全最佳实践 2018-01-04 11:05:56作者:凉凉_,soaring稿源:开源中国社区 https://ywnz.com/linuxysjk ...

随机推荐

  1. POJ 2679:Adventurous Driving(SPFA+DFS)

    http://poj.org/problem?id=2679 Adventurous Driving Time Limit: 1000MS   Memory Limit: 65536K Total S ...

  2. Oracle 数据库连接不上 登录一直卡死

    在此记录下半个月来,oracle数据库本地神奇地连接不了的事件. 描述下我的情况: (1)使用navicat连接本地的数据库,结果一直卡[正在连接中(无响应)]: (2)使用PL/SQL连接本地的数据 ...

  3. TCP/IP协议、三次握手、四次挥手

    1.什么是TCP/IP协议 TCP/IP 是一类协议系统,它是用于网络通信的一套协议集合. 传统上来说 TCP/IP 被认为是一个四层协议 1) 网络接口层: 主要是指物理层次的一些接口,比如电缆等. ...

  4. S7-1200 的运动控制

    S7-1200 CPU本体集成点硬件输出点最高频率为100kHz,信号板上硬件集成点输出的最高频率为20kHz,CPU在使用PTO功能时将把集成点Qa.o,Qa.2或信号板的Q4.0作为脉冲输出点,Q ...

  5. c++ 广度优先搜索(宽搜)

    c++ bfs基本应用 Knight Moves 题目描述 贝茜和她的表妹在玩一个简化版的国际象棋.棋盘如图所示: 贝茜和表妹各有一颗棋子.棋子每次移一步,且棋子只能往如图所示的八个方向移动.比赛的规 ...

  6. git rebase VS git merge? 更优雅的 git 合并方式值得拥有

    写在前面 如果你不能很好的应用 Git,那么这里为你提供一个非常棒的 Git 在线练习工具 Git Online ,你可以更直观的看到你所使用的命令会产生什么效果 另外,你在使用 Git 合并分支时只 ...

  7. 个人永久性免费-Excel催化剂功能第64波-多级数据如省市区联动输入,自由配置永不失效

    日常使用各大系统过程中,数据录入的规范性一般做得都很不错,本来系统的存在很大范畴就是为了数据和管理的规范性.在Excel环境中,想得到规范性的数据录入,除非是自行对数据有很深的认识,知道哪些数据是脏乱 ...

  8. hexo-theme-yilia使用遇到的问题

    该项目的github地址:https://github.com/litten/hexo-theme-yilia 下面是该项目的README.md 在使用过中遇到这么一个问题. 文章不会自动的摘要,显示 ...

  9. fjnu2016-2017 低程 PROBLEM C 汪老司机

    动态规划 方程 #include <iostream>#include <iomanip>#include <cmath>#include <algorith ...

  10. 博弈论基础之sg函数与nim

    在算法竞赛中,博弈论题目往往是以icg.通俗的说就是两人交替操作,每步都各自合法,合法性与选手无关,只与游戏有关.往往我们需要求解在某一个游戏或几个游戏中的某个状态下,先手或后手谁会胜利的问题.就比如 ...