热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

服务器故障如何排查?

我是英俊潇洒,技术过硬的网盾运维攻城狮龟哥。今天咱们来聊聊服务器出故障了如何排查。服务器运行过程中难免会出现非人为因素的故障,遇事不要慌,沉着冷静,找出问题所在,对症下药的来解决。下面给大家分享常见的

我是英俊潇洒,技术过硬的网盾运维攻城狮龟哥。今天咱们来聊聊服务器出故障了如何排查。

服务器运行过程中难免会出现非人为因素的故障,遇事不要慌,沉着冷静,找出问题所在,对症下药的来解决。下面给大家分享常见的排查方法。

一、 咱们得搞清楚问题的前因后果

医生诊断讲究“望闻问切”然后对症下药,服务器故障也一样啊。

首先啊,搞清楚服务器故障的“发病”时间、症状表现是什么?

然后查监控平台,查日志,很多问题都是在日志系统中暴露出来的,。

二、有哪些用户访问?

1. $last

2. $w

在没有其他用户干活的时候,可以用这两个命令查看都有谁在线,谁访问过,捕捉现场嫌疑人。

三、执行过什么命令?

1.$history

根据前面看到的谁登录过,查看一下之前服务器上执行过的命令,更新HISTTIMEFORMAT环境变量来显示这些命令被执行的时间,不过不该看的咱还是不要看哦,侵犯别人隐私知道的太多容易被灭口~~

四、查看正在运行的进程

1.$pstree-a

2.$psaux

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

五、监听的网络服务

1.$netstat-ntlp

2.$netstat-nulp

3.$netstat-nxlp

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

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

六、CPU和内存

1.$free-m

2.$uptime

3.$top

4.$htop

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

是否有某些CPU核负载过多了?

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

七、硬件

1.$lspci

2.$dmidecode

3.$ethtool

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

找到RAID卡、CPU、空余的内存插槽。根据这些情况可以大致了解硬件问题的来源和性能改进的办法。

八、IO性能

1.$iostat-kx2

2.$vmstat210

3.$mpstat210

4.$dstat--top-io--top-bio

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

检查磁盘使用量:服务器硬盘是否已满?

是否开启了swap交换模式(si/so)?

确认CPU被谁占用,dstat可以看到谁在进行IO:看看是不是MySQL或者PHP进程占用了所有的系统资源?

九、挂载点和文件系统

1.$mount

2.$cat/etc/fstab

3.$vgs

4.$pvs

5.$lvs

6.$df-h

7.$lsof+D//*bewarenottokillyourbox*/

确认一共挂载了多少文件系统。

有没有某个服务专用的文件系统?(比如MySQL?)

文件系统的挂载选项是什么:noatime?default?有没有文件系统被重新挂载为只读模式了?

磁盘空间是否有剩余?大文件被删除后有没有清空?

十、内核、中断和网络

1.$sysctl-a|grep...

2.$cat/proc/interrupts

3.$cat/proc/net/ip_conntrack/*maytakesometimeonbusyservers*/

4.$netstat

5.$ss-s

你的中断请求是否是均衡地分配给CPU处理,还是会有某个CPU的核因为大量的网络中断请求或者RAID请求而过载了?

SWAP交换的设置是什么?对于工作站来说swappinness设为60就很好,不过对于服务器就太糟了:你最好永远不要让服务器做SWAP交换,不然对磁盘的读写会锁死SWAP进程。

conntrack_max是否设的足够大,能应付你服务器的流量?

在不同状态下(TIME_WAIT,…)TCP连接时间的设置是怎样的?

如果要显示所有存在的连接,netstat会比较慢,你可以先用ss看一下总体情况。

你还可以看一下LinuxTCPtuning了解网络性能调优的一些要点。

十一、系统日志和内核消息

1.$dmesg

2.$less/var/log/messages

3.$less/var/log/secure

4.$less/var/log/auth

查看错误和警告消息,比如看看是不是很多关于连接数过多导致?

看看是否有硬件错误或文件系统错误?

分析是否能将这些错误事件和前面发现的疑点进行时间上的比对。如果你有多台机器,看起来很不方便,可以事先把日志存储在系统笔记的云日志服务器上,支持全文模糊查找,

十二、定时任务

1.$ls/etc/cron*+cat

2.$foruserin$(cat/etc/passwd|cut-f1-d:);docrontab-l-u$user;done

查看是不是用户提交了隐藏的定时任务或者运行某个定时任务过于频繁等?

根据以上找出了问题所在,对应维护相应板块就可以了。此处证明了找一个24*7小时的运营商租用服务器多么重要,毕竟服务器故障解决的越迅速,避免风险的系数就越高。还有什么不清楚的,欢迎各位联系龟哥探讨。


推荐阅读
author-avatar
飞扬8989_100
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有