在服务器上排除问题的头五分钟(干货)

我们团队为上一家公司承担运维、优化和扩展工作的时候,我们碰到了各种不同规模的性能很差的系统和基础设备(大型系统居多,比如 CNN 或者世界银行的系统)。要是再赶上修复时间紧、奇葩的技术平台、缺少信息和文档,基本上这过程都会惨痛到让我们留下深刻的记忆。



 

遇到服务器故障,问题出现的原因很少可以一下就想到。我们基本上都会从以下步骤入手:

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

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

必须搞清楚的问题有:

故障的表现是什么?无响应?报错?

故障是什么时候发现的?

故障是否可重现?

有没有出现的规律(比如每小时出现一次)

最后一次对整个平台进行更新的内容是什么(代码、服务器等)?

故障影响的特定用户群是什么样的(已登录的, 退出的, 某个地域的…)?

基础架构(物理的、逻辑的)的文档是否能找到?

是否有监控平台可用? (比如 Munin、Zabbix、 Nagios、 New Relic… 什么都可以)

是否有日志可以查看?. (比如 Loggly、Airbrake、 Graylog…)

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

  二、有谁在?

1
$w$last

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

  三、之前发生了什么?

1
$history

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

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

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

1
2
$pstree-a
$ps aux

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

  五、监听的网络服务

1
2
3
$netstat-ntlp
$netstat-nulp
$netstat-nxlp

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

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

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

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

  六、CPU 和内存

1
2
3
4
$free-m
$uptime
$top
$htop

注意以下问题:

还有空余的内存吗? 服务器是否正在内存和硬盘之间进行 swap?

还有剩余的 CPU 吗? 服务器是几核的? 是否有某些 CPU 核负载过多了?

服务器最大的负载来自什么地方? 平均负载是多少?

  七、硬件

1
2
$lspci$dmidecode
$ethtool

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

找到 RAID 卡 (是否带 BBU 备用电池?)、 CPU、空余的内存插槽。根据这些情况可以大致了解硬件问题的来源和性能改进的办法。

网卡是否设置好? 是否正运行在半双工状态? 速度是 10MBps? 有没有 TX/RX 报错?

(责任编辑:安博涛)

分享到:

更多
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
  • 微笑/wx
  • 撇嘴/pz
  • 抓狂/zk
  • 流汗/lh
  • 大兵/db
  • 奋斗/fd
  • 疑问/yw
  • 晕/y
  • 偷笑/wx
  • 可爱/ka
  • 傲慢/am
  • 惊恐/jk
用户名: 验证码:点击我更换图片
资料下载专区
图文资讯

网络安全:互联网安全 如何防范木马及病毒

网络安全:互联网安全 如何防范木马及病毒的攻击

一、计算机中毒有哪些症状? 人生病了,会有各种各样的症状,同样,电脑中毒了也会有...[详细]

加强网站服务器安全维护的技巧

加强网站服务器安全维护的技巧

计算机系统服务器的维护工作十分重要,稍有不慎就会使整个网络陷入瘫痪。目前,网络经...[详细]

电脑离线就安全?这个软件一样能远程窃取数

电脑离线就安全?这个软件一样能远程窃取数据

以色列的一个研究团队已改良了窃取离线电脑数据的方法。人们一直认为这种离线电脑在面...[详细]

如何在Linux上最妥善地管理加密密钥?

如何在Linux上最妥善地管理加密密钥?

存储SSH加密密钥和牢记密码可能是一件让人很头痛的事儿。不过遗憾的是,在如今恶意黑...[详细]

如何在 Linux 上运行命令前临时清空 Bash

如何在 Linux 上运行命令前临时清空 Bash 环境变量

我是个 bash shell 用户。我想临时清空 bash shell 环境变量。但我不想删除或者 unset...[详细]

返回首页 返回顶部