遇到服务器故障,问题出现的原因很少可以一下就想到。我们基本上都会从以下步骤入手,这些也是绝大多数运维工程师在定位故障时前几分钟的主要排查点:

一、尽可能搞清楚问题的前因后果

不要一下子就扎到服务器前面,你需要先搞明白对这台服务器有多少已知的情况,还有故障的具体情况。不然你很可能就是在无的放矢。

必须搞清楚的问题有:

  • 故障的表现是什么?无响应?报错?
  • 故障是什么时候发现的?
  • 故障是否可重现?
  • 有没有出现的规律(比如每小时出现一次)
  • 最后一次对整个平台进行更新的内容是什么(代码、服务器等)?
  • 故障影响的特定用户群是什么样的(已登录的, 退出的, 某个地域的…)?
  • 基础架构(物理的、逻辑的)的文档是否能找到?
  • 是否有监控平台可用? (比如Munin、Zabbix、 Nagios、 New Relic… 什么都可以)
  • 是否有日志可以查看?. (比如Loggly、Airbrake、 Graylog…)

最后两个是最方便的信息来源,不过别抱太大希望,基本上它们都不会有。只能再继续摸索了。

二、有谁在?

$ w$ last

用这两个命令看看都有谁在线,有哪些用户访问过。这不是什么关键步骤,不过最好别在其他用户正干活的时候来调试系统。有道是一山不容二虎嘛。(ne cook in the kitchen is enough.)

三、之前发生了什么?

$ history

查看一下之前服务器上执行过的命令。看一下总是没错的,加上前面看的谁登录过的信息,应该有点用。另外作为admin要注意,不要利用自己的权限去侵犯别人的隐私哦。

到这里先提醒一下,等会你可能会需要更新 HISTTIMEFORMAT 环境变量来显示这些命令被执行的时间。对要不然光看到一堆不知道啥时候执行的命令,同样会令人抓狂的。

四、现在在运行的进程是啥?

$ pstree -a$ ps aux

这都是查看现有进程的。ps aux 的结果比较杂乱, pstree -a 的结果比较简单明了,可以看到正在运行的进程及相关用户。

五、监听的网络服务

$ netstat -ntlp$ netstat -nulp$ netstat -nxlp

我一般都分开运行这三个命令,不想一下子看到列出一大堆所有的服务。netstat -nalp倒也可以。不过我绝不会用 numeric 选项 (鄙人一点浅薄的看法:IP 地址看起来更方便)。

找到所有正在运行的服务,检查它们是否应该运行。查看各个监听端口。在netstat显示的服务列表中的PID 和 ps aux 进程列表中的是一样的。

如果服务器上有好几个Java或者Erlang什么的进程在同时运行,能够按PID分别找到每个进程就很重要了。

通常我们建议每台服务器上运行的服务少一点,必要时可以增加服务器。如果你看到一台服务器上有三四十个监听端口开着,那还是做个记录,回头有空的时候清理一下,重新组织一下服务器。

六、CPU 和内存

$ free -m$ uptime$ top$ htop

注意以下问题:

  • 还有空余的内存吗? 服务器是否正在内存和硬盘之间进行swap?
  • 还有剩余的CPU吗? 服务器是几核的? 是否有某些CPU核负载过多了?
  • 服务器最大的负载来自什么地方? 平均负载是多少?

七、硬件

$ lspci$ dmidecode$ ethtool

有很多服务器还是裸机状态,可以看一下:

  • 找到RAID 卡 (是否带BBU备用电池?)、 CPU、空余的内存插槽。根据这些情况可以大致了解硬件问题的来源和性能改进的办法。
  • 网卡是否设置好? 是否正运行在半双工状态? 速度是10MBps? 有没有 TX/RX 报错?

八、IO 性能

$ iostat -kx 2$ vmstat 2 10$ mpstat 2 10$ dstat --top-io --top-bio

这些命令对于调试后端性能非常有用。

  • 检查磁盘使用量:服务器硬盘是否已满?
  • 是否开启了swap交换模式 (si/so)?
  • CPU被谁占用:系统进程? 用户进程? 虚拟机?
  • dstat 是我的最爱。用它可以看到谁在进行 IO:是不是MySQL吃掉了所有的系统资源? 还是你的PHP进程?

九、挂载点 和 文件系统

$ mount$ cat /etc/fstab$ vgs$ pvs$ lvs$ df -h$ lsof +D / /* beware not to kill your box */
  • 一共挂载了多少文件系统?
  • 有没有某个服务专用的文件系统? (比如MySQL?)
  • 文件系统的挂载选项是什么:noatime? default? 有没有文件系统被重新挂载为只读模式了?
  • 磁盘空间是否还有剩余?
  • 是否有大文件被删除但没有清空?
  • 如果磁盘空间有问题,你是否还有空间来扩展一个分区?

十、系统日志和内核消息

$ dmesg$ less /var/log/messages$ less /var/log/secure$ less /var/log/auth
  • 查看错误和警告消息,比如看看是不是很多关于连接数过多导致?
  • 看看是否有硬件错误或文件系统错误?
  • 分析是否能将这些错误事件和前面发现的疑点进行时间上的比对。

十一、应用系统日志

这里边可分析的东西就多了, 不过恐怕你作为运维人员是没功夫去仔细研究它的。关注那些明显的问题,比如在一个典型的LAMP(Linux+Apache+Mysql+Perl)应用环境里:

  • Apache & Nginx; 查找访问和错误日志, 直接找 5xx 错误, 再看看是否有 limit_zone错误。
  • MySQL; 在mysql.log找错误消息,看看有没有结构损坏的表, 是否有innodb修复进程在运行,是否有disk/index/query 问题.
  • PHP-FPM; 如果设定了 php-slow 日志, 直接找错误信息 (php, mysql, memcache, …),如果没设定,赶紧设定。
  • Varnish; 在varnishlog 和 varnishstat 里, 检查 hit/miss比. 看看配置信息里是否遗漏了什么规则,使最终用户可以直接攻击你的后端?
  • HA-Proxy; 后端的状况如何?健康状况检查是否成功?是前端还是后端的队列大小达到最大值了?

结论:

经过这5分钟之后,你应该对如下情况比较清楚了:

  • 在服务器上运行的都是些啥?
  • 这个故障看起来是和 IO/硬件/网络 或者 系统配置 (有问题的代码、系统内核调优, …)相关。
  • 这个故障是否有你熟悉的一些特征?比如对数据库索引使用不当,或者太多的apache后台进程。

你甚至有可能找到真正的故障源头。就算还没有找到,搞清楚了上面这些情况之后,你现在也具备了深挖下去的条件,继续努力吧!

directx最终用户运行时_运维定位服务故障时,前5分钟都在忙啥?相关推荐

  1. python运维工程师前景及待遇_运维工程师有前途么?

    看怎么定义前途? 我直接点吧,不拿那些虚的精神生活来定义前途了,免得说忽悠,还是直接用物质水平吧 如果对于普通人来说,前途是指能赚个买房买车钱,那肯定没问题 如果想实现阶级跃升,进入富人阶级,也不是说 ...

  2. python脚本监控网站状态 - 赵海华_运维之路 - 51CTO技术博客

    python脚本监控网站状态 - 赵海华_运维之路 - 51CTO技术博客 python脚本监控网站状态 2013-01-09 09:21:02 标签:监控 python 原创作品,允许转载,转载时请 ...

  3. python运维脚本面试_运维开发工程师 面试题 shell编程

    1. 32位随机密码生成 cat /proc/sys/kernel/random/uuid | tr -d '-' 2.查看当前系统每个ip的tcp连接数 -n 强制显示IP地址 -t 显示TCP连接 ...

  4. 运维拜年口号_运维口号(运维服务口号大全)

    运维口号(运维服务口号大全) 2020-05-07 22:16:57 共10个回答 以十分运维四个字,组成8个字的口号.来帮下忙给高分 十分运维,九州风行十分运维,精彩十分十分运维,选择无憾 机房运维 ...

  5. 运维拜年口号_运维的口号(运维服务口号大全)

    运维的口号(运维服务口号大全) 2020-05-07 22:18:29 共10个回答 以十分运维四个字,组成8个字的口号.来帮下忙给高分 十分运维,九州风行十分运维,精彩十分十分运维,选择无憾 机房运 ...

  6. 专访淘宝仲明:揭秘阿里运维部的故障响应机制(

    [51CTO专访]在2012年12月4日召开的Velocity China大会上,大家翘首以盼的.有关淘宝双十一的分享,终于正式跟大家见面啦!虽然这一场被安排在了下午5点以后,但现场的观众们仍然很热情 ...

  7. 基于 Flink ML 搭建的智能运维算法服务及应用

    摘要:本文整理自阿里云计算平台算法专家张颖莹,在 Flink Forward Asia 2022 AI 特征工程专场的分享.本篇内容主要分为五个部分: 阿里云大数据平台的智能运维 智能运维算法服务应用 ...

  8. 001上海市某区政府政务外网信息安全运维项目服务细则

      目录 第一章   概述 ... 3 1.      项目目的 ... 3 2.      服务范围 ... 3 3.1              安全规划服务 ... 3 3.2          ...

  9. 监控易:为医药行业解决IT运维与业务故障难题

    (图片来源网络) 当前,中国的医药行业正面临新一轮变革,国内的政策环境.产业结构和病患需求都在发生快速变化.突如其来的新冠疫情更是加速了医药产业的数字化进程,为医药产业管理.医药资源配置以及创新药物科 ...

最新文章

  1. 一篇学会HttpServletRequest
  2. 【HM】第3课:JavaScript高级
  3. (翻译) MongoDB(2) 数据库和集合
  4. 通过js判断不同终端类型,跳转到不同的页面
  5. java scoket网络编程_嵌入式狗的JAVA之路 socket 网络编程
  6. 利用WebBrowser实现Web打印的分析
  7. windows/browser ---- cmd命令/powershell命令/chrome插件vimuim命令
  8. Recreate failovered primary database using Flashback Database
  9. dpkg检查某个应用是否已安装
  10. FaceWarehouse 3DMM形状拟合
  11. aria2使用rpc下载百度云
  12. Scratch小游戏《恐龙》
  13. oracle 12C 静默安装
  14. c语言将时速转换成配速,配速与时速换算(跑步配速和时速换算)
  15. php 港澳台、大陆身份证正则表达式
  16. 1024,错过这一波福利,又要等一年了!
  17. win10 SystemParametersInfo 设置屏保 不好使_[教程]win10 ,ubuntu双系统安装避坑指南
  18. ES6 新特性之 let, const : JavaScript在变量方面的改进。
  19. 成长,进一寸有一寸的欢喜
  20. 魅族便签,是否能成为国内便签应用的No.1?

热门文章

  1. 扩展插件_Adobe扩展工具插件系列
  2. 【OS学习笔记】十八 保护模式五:保户模式下如何进行内存保护 与 别名段的意义与作用 对应汇编代码
  3. springboot+hbase 集成
  4. 几位大佬启蒙老师和女神启蒙老师的博客,大家可以多关注下
  5. 2018java最新面试题
  6. Mybatis 系列2-配置文件
  7. UOJ.35.[模板]后缀排序(后缀数组 倍增)
  8. Vijos——T 1629 八
  9. selenium之截图
  10. UICollectionView reloadData后cell被隐藏