(转载)在服务器上排除问题的头5分钟

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

不要一下子就扎到服务器前面,你需要先搞明白这台服务器有多少已知的情况,还有故障的具体情况,不然你很有可能是在无的放矢
必须要搞清楚的问题:
  • 故障的表现是什么?无响应?报错?
  • 故障是什么时候发现的?
  • 故障是否可以重现?
  • 有没有出现的规律(比如每小时一次)
  • 最后一次对整个平台进行更新的内容是什么(代码、服务器)?
  • 故障影响的特定用户群是什么样的(已登录的、退出的、某个地域的...)?
  • 基础架构(物理的、逻辑的)的文档是否能找到?
  • 是否有监控平台可用?
  • 是否有日志可以查看?
最后两个是最方便的信息来源,不过别抱太大希望,基本上它们都不会有,只能再继续摸索

有谁在?

[html] view plaincopyprint?
  1. $ w  
  2. $ last  

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

之前发生了什么?

[html] view plaincopyprint?
  1. $ history  

查看一下之前服务器上执行过的命令。看一下总是没错的,加上前面看的谁登录过的信息,应该有点用。另外,作为admin要注意,不用利用自己的权限去侵犯别人的隐私!
到这里先提醒一下,查看history的时候需要更新一下HISTTIMEFORMAT环境变量来显示这些命令执行的时间。(ps:个人补充)
配置HISTTIMEFORMAT可使用如下命令:
[html] view plaincopyprint?
  1. $ export HISTTIMEFORMAT="%F %T "  


现在运行的进程

[html] view plaincopyprint?
  1. $ pstree -a  
  2. $ps aux  

这都是查看现有进程的。ps aux的结果比较杂乱(ps:个人不认同,ps aux可以用过管道+grep进行过滤,pstree可没有这功能),pstree -a的结果比较简单明了,可以看到正在运行的进程以及相关用户

监听的网络服务

[html] view plaincopyprint?
  1. $ netstat -ntlp  
  2. $ netstat -nulp  
  3. $ netstat -nxlp  

我一般都分开运行这三个命令,不想一下子看到列出一大堆所有的服务。netstat -nalp倒也可以。
找到所有正在运行的服务,检查它们是否应该运行。查看各个监听端口。
通常我们建议每台服务器上运行的服务少一点,必要时可以增加服务器。如果你看到一台服务器上有三四个监听端口开着,那还是做个记录,回头有空的时候清理一下,重新组织一下服务器

CPU和内存

[html] view plaincopyprint?
  1. $ free -m  
  2. $ uptime  
  3. $ top  

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

硬件

[html] view plaincopyprint?
  1. $ lspci  
  2. $ dmidecode  
  3. $ ethtool  

我觉得主要是使用ethtool查看网卡是否设置好?是否正运行在半双工状态?速度是10MBps?有没有TX/RX报错?

IO性能

[html] view plaincopyprint?
  1. dstat --top-io --top-bio  

我这里只写了一个我会用而且感觉最好用的dstat。用它可以看道谁正在进行IO:是不是MYSQL吃掉了所有的系统资源?还是你的PHP进程?

系统日志和内核消息

[html] view plaincopyprint?
  1. $ dmesg  
  2. $ less /var/log/auth.log  

  • 查看错误和警告信息,比如看看是不是连接数过多导致?
  • 看看是否有硬件错误或文件系统错误?
  • 分析是否能将这些错误时间和前面发现的疑点进行时间上的对比

定时任务

[html] view plaincopyprint?
  1. $ ls /etc/cron* | cat  
  2. $ for user in $(cat /etc/passwd | awk -F ":" '{print $1}'); do crontab -l -u $user; done  
(ps:这里我改写了部分linux命令使用,哈哈,虽然是转载,但是也要有我自己的风格在里面)
  • 是否某个定时任务运行过于频繁?
  • 是否有些用户提交了隐藏的定时任务?
  • 在出现故障的时候,是否正好有某个备份额任务正在执行?

应用系统日志

这里分析的东西可就多了,不过恐怕你作为运维人员是没功夫仔细研究它的。关注那么明显的问题,比如在一个典型的LAMP应用环境里:
  • Apache&Nginx;查询访问和错误日志,直接找5××错误,再看是否有limit_zone错误
  • Mysql;在mysql.log找错误信息,看看有没有结构损坏的表,是否有innodb修复进程正在运行,是否有disk/index/query问题
  • PHP-FPM:如果设定了php-slow日志,直接找错误信息

结论

经过这5分钟之后,你应该对如下情况比较清楚了:
  • 在服务器上运行的都是些啥?
  • 这个故障看起来是和IO/硬件/网络或者系统配置相关
  • 这个故障是否有你熟悉的一些特征?比如数据库索引使用不当,或者太多的apache后台进程

http://blog.csdn.net/wzy_1988/article/details/12355103

转载于:https://www.cnblogs.com/bluewelkin/p/3944929.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/290776.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wikioi 1034 家 实时动态的网络流量(费用流)

因为随着时间的推移。网络侧变得,因此,常见的网络流量也解决不了这个问题,。如果T毕竟运输时间。为此。我们可以基于时间分割点,所有的点将被分割为T点。 对于每一个点,下一次甚至一个容量为本人INF边缘,费…

华为服务器只显示一个下划线,华为官方解释:为什么鸿蒙系统logo下面会有一条下划线...

HarmonyOS 的 Logo 中为什么有一横?为什么这一横偏偏是蓝色?HarmonyOS 的字体设计又藏着什么奥秘?6月10日晚,华为官方微博对鸿蒙系统LOGO设计寓意,作出了官方科普。下面就来为你一一解答在现代汉语中“旦”字与鸿蒙OS中…

Android之jni出现JNIEnv has no member named ‘GetMehtodID‘解决办法

1、问题 ndk-build提示 JNIEnv has no member named GetMehtodID 2、原因 我把那个函数写错了 3、解决办法 复制上面正常的函数,把函数改为 env->GetMethodID

ORACLE利用STANDBY端RMAN备份进行数据恢复

这里记录一下流程,有我和同事问心进行测试 dataguard主库和物理备库主要是controlfile文件有区别,用restore可以查看含有primary,standby关键字 RMAN> restore ; RMAN-00571: RMAN-00569: ERROR MESSAGE STACK FOLLOWS RMAN-00571: RMAN-00558: e…

腾讯急招多名.NET Core,5年30k!

金三银四跳槽季,腾讯急招5年左右.NET Core高级开发岗,基本月薪能到30k,心动吗?这里推荐个.NET跳槽大厂交流群,有技术交流,有面经分享,还有内推通道,据说有一定几率降低学历要求&…

【BZOJ】1679: [Usaco2005 Jan]Moo Volume 牛的呼声(数学)

http://www.lydsy.com/JudgeOnline/problem.php?id1679 水题没啥好说的。。自己用笔画画就懂了 将点排序&#xff0c;然后每一次的点到后边点的声音距离和(n-i)*(a[i1]-a[i])之前同样操作所得的的sum 然后答案就是累加后2 #include <cstdio> #include <cstring> #…

perl学习笔记——目录操作

在目录书中移动 chdir 操作副改变当前的工作目录。它和shell中cd命令类似&#xff1a; chdir ‘/etc’ or die “cannot chdir to /etc:$1”; 注意&#xff1a;工作目录不能更改的&#xff0c;也就是说Perl程序返回后一定会回到所在的工作目录。 如果调用chdir时不加参数&#…

凌动服务器系列,凌动也能造服务器?超微又出怪异新品

【IT168 专稿】上月初举行的英特尔春季IDF上&#xff0c;记者看到超微展示了采用独特设计的2U Twin系列高密度Nehalem服务器&#xff0c;该服务器采用了全冗余设计&#xff0c;包括主板在内的所有部件都有两个互为备份。可以说超微一直以来都以自身独特的设计理念和大胆的实践拓…

C语言——关于数据在内存中存储的练习

大家好&#xff0c;我是残念&#xff0c;希望在你看完之后&#xff0c;能对你有所帮助&#xff0c;有什么不足请指正&#xff01;共同学习交流 本文由&#xff1a;残念ing原创CSDN首发&#xff0c;如需要转载请通知 个人主页&#xff1a;残念ing-CSDN博客&#xff0c;欢迎各位→…

LeetCode之字符串(C++)的切割简单实现

1、问题 C++字符串的切割 2、代码 #include <iostream> #include <string> #include <vector>std::vector<std::string> splite(const std::string &value, const std::string &pattern) {std::vector<std::string> result;if (value …

Avalonia跨平台入门第九篇之控件置顶和置底

在前面分享的几篇中咱已经玩耍了Popup、ListBox多选、Grid动态分、RadioButton模板、控件的拖放效果;今天趁着有时间接着对拖放到Canvas上的控件进行置顶和置底切换的效果,最终实现的效果如下图:关于置顶和置底的实现代码:接下来的文章中我会再来分享在Canvas上控件的锁定效果;…

unity的依赖注入

参考文档 http://www.cnblogs.com/zhangchenliang/archive/2013/01/08/2850970.html http://www.tuicool.com/articles/yiUzQj IUnityContainer container new UnityContainer();#region 1.0 注册类型container.RegisterType<IKiss, Boy>();var boy container.Resolve&…

ios 贝塞尔动画

CGPoint fromPoint self.imageView.center; //路径曲线 UIBezierPath *movePath [UIBezierPath bezierPath]; [movePath moveToPoint:fromPoint]; CGPoint toPoint CGPointMake(300, 460); [movePath addQuadCurveToPoint:toPoint c…

SAP中查询用户操作日志的事务码

事务码&#xff1a;STAD 注意&#xff1a;查询的时间跨度范围不要太大&#xff0c;否则会很慢&#xff01; 事务码&#xff1a;ST03N 工作负载和性能统计转载于:https://www.cnblogs.com/ruingy/p/3955340.html

C/C++之常用字符串比较总结

1、std::string比较 我们一般用str1.compare(str2) 0来实现 2、const char* 的比较 我们一般用strcmp(p1, p2) 0来实现 3、代码 4、结果 str1 str4 str5 is null p1 p3

【C#/.NET】控制台上动态构建中间件管道

如上图所示&#xff1a;我们将会在下面文章上一步一步变形实现出这样的功能。一、傻瓜式执行演示首先建立控制台项目&#xff0c;创建Begin() FirstMiddleware() SecondMiddleware() End() 三个函数1 /// <summary>2 /// 开始执行前3 /// </summ…

SON Web Token设计单点登录系统

2019独角兽企业重金招聘Python工程师标准>>> 上次在《JSON Web Token - 在Web应用间安全地传递信息》中我提到了JSON Web Token可以用来设计单点登录系统。我尝试用八幅漫画先让大家理解如何设计正常的用户认证系统&#xff0c;然后再延伸到单点登录系统。 如果还没…

00001centos6.3安装

使用的环境centos6.3vm9putty or xshell4xshell4 乱码问题http://blog.itpub.net/26230597/viewspace-1146248/后盾网李波老师的PPT非常给力可惜没找到转载于:https://blog.51cto.com/panzhengming/1548791

Android之获取指定目录下的所有特殊文件名字

1、获取指定目录下的所有特殊文件名字 比如我们在sdcard目录下的chenyu这个文件夹里面获取以so文件结尾的所有文件名 2、代码 public ArrayList<String> getFileName(String fileAbsolutePaht, String type) {ArrayList<String> result new ArrayList<String&…

笔记(2015-07-24)

STL方面的笔记 以下为vector queue map set stack的基本用法 可编译结合注释查看 1 #include <vector>2 #include <iostream>3 #include <queue>4 #include <map>5 #include <set>6 #include <stack>7 using namespace std;8 9 #define RE…