问题服务器【人在运维囧途_14】打扫干净屋子再请客

在本篇文章中,我们主要介绍问题服务器的内容,自我感觉有个不错的建议和大家分享下

     

    

    些时候木有更新人在囧途之运维的系列鸟、今儿个题目稍显文艺
     不过、俺觉得、这类方格不赖、可能后续的文全是这样咯
     
     人在运维囧途总会和服务器故障邂逅相遇、磕磕绊绊也在劫难逃
     但是在轻视逻辑的状态下冒死找谜底、只会浪费更多的时间、这是非常危险的
     我记得福尔摩斯有提过:
     在没有事实作为参考以前妄下猜想(论点)是个很恐怖的错误
     感觉不准确的人老是用事实去套自己固有的猜想(论点)
     而不是按准确的方法根据得到的事实来推导论断,看它能否符合已得到的事实
     
     其最重要一点(没有之一哦)是、要先对故障现场了如指掌!!
     
     接下来是一些做法、让大家更容易理解福尔摩斯话里所谓的"事实"、诸位看官请笑纳
     
     

    ⑴ 穿梭问题的宿世今生

        

        莫一下子扎入服务器、你需要先明确对这台服务器有多少已知情况

        必须理清的问题大致如下图所示:

        

              问题和服务器

    

    每日一道理
有一首诗最为动人,那就是青春;有一段人生最美丽,那就是青春;有一道风景最为亮丽,那就是青春。青春,不要说已疲惫,也许你的幻想曾被现实无情毁灭,也许你的追求毫无结果,但你应该相信,没有寒风的洗礼,哪来万紫千红的春天,没有心的耕耘,哪有累累硕果?

         ⑵ 有谁在?
        
        有道是、一山不容二虎、除非、、、、哈哈
        现在都有谁在线?有哪些用户访问过?想知道吗?哦、、那就看这哥俩了
        
        ● w
        ● last
        
     ⑶ 之前发生了什么?
        
        秋后算账也要先翻翻老底子哟、厚不厚也就这一回咯
        可借助:
        ① 命令:history
        ② 变量:HISTTIMEFORMAT
        这两人可是衣宽带水的烂兄烂弟呀、离了谁、谁就活得抓狂哦
        
     ⑷ 现在运行的进程是啥?
        
        这个比拟容易哈、条条大路通罗马、譬如:
        ● pstree -a
        或者、、、
        ● ps aux 
        、、、、、
        
     ⑸ 监听的网络服务
        
        话不多说、亮三把杀手锏唬唬大伙
        
        ● netstat -lntp
        ● netstat -lnup
        ● netstat -lnxp
        
        至于含意嘛、房事不懂问天涯啦
        
        
        
     ⑹ CPU & 内存
        
        在这里、偶感觉有点解方程的滋味、
        利用几个命令/工具、来答复几个问题
        这个、这个、这、、貌似回到了遥远的初中、那时、我还年轻
        
        比如、方程式有:
        ● free -m
        ● uptime
        ● top 
        ● htop
        
        比如、问题是:
        ① 还有空余内存否?是不是使用了swap?
        ② 还有残余CPU否?几核的?是不是有某些核负载过多?
        ③ 服务器最大负载来自哪里?均匀负载是多少?
        
        
     ⑺ 硬件
        
        ● lspci
        ● ethtool
        ● dmidlecode
        
        如有很多服务器还是裸机状态、可以看一下:
        
        ① 找到 RAID 卡(是不是带 BBU备用电池?)、CPU、空余的内存插槽
        ② 网卡是不是设置好?是不是正运行在半双工状态?速度是10MBps?有TX/RX报错吗?
        
        
     ⑻ IO 性能
        
        ● iostat -kx 2
        ● vmstat 2 10
        ● mpstat 2 10 
        ● dstat --top-io --top-bio
        
        这些命令对后端优化利益N多:
        
        ① 检查磁盘使用量、磁盘是不是已满?
        ② 是不是开启了swap交换模式(si/so)
        ③ CPU被谁占用?
        ④ dstat可以看到谁在停止IO:是MySQLD 还是 PHP 等
        
        
     ⑼ 挂载点和文件系统
        
        ● mount 
        ● cat /etc/fstab
        ● vgs
        ● pvs
        ● lvs
        ● df -h
        
        答复以下问题:
        
        ① 一共挂载了多少文件系统
        ② 有无某个服务专用的文件系统
        ③ 文件系统的挂载选项什么
        ④ 是不是有大文件被删除但空间未被释放
        ⑤ 是不是还有空间来扩展一个分区
        
        
        
     ⑽ 内核、中断和网络
        
        ● sysctl -a | grep ...
        ● cat /proc/interrupts
        ● cat /proc/net/ip_conntrack
        ● netstat
        ● ss -s
        
        答复以下问题:
        
        ① 显示所有存在的连接、netstat可能较慢、ss可先了解整体
        ② 在不同状态下(TIME_WAIT....)TCP连接时间的设置如何
        ③ conntrack_max是不是设置的足够大、能敷衍你服务器的流量
        ④ SWAP交换设置是什么?对于工作站来说 swappiness 设为 60 就好
        ⑤ 中断请求是不是均衡地分配给CPU处理?
        
        
     ⑾ 系统日记和内核消息
        
        ● dmesg
        ● less /var/log/messages
        ● less /var/log/secure
        ● less /var/log/auth
        
        答复以下问题:
        
        ① 查看错误和告警信息、如是不是存在过载的连接数
        ② 看看是不是有硬件错误或文件系统错误
        ③ 分析这些错误事件和前面发明的疑点停止时间上的比对
        
        
     ⑿ 定时任务
        
        ① 是不是有某个定时任务运行过于频繁?
        ② 是不是有某些用户提交了隐藏的定时任务?
        ③ 在涌现故障的时候、是不是正好有某个备份任务在执行?
        
        
     ⒀ 其他应用的系统日记
        
        这里是个硕大的、蛋碎的、抓狂的、(此处省略N个形容词)、、、、的工程
        比如:Oracle的alert和trc文件
                    Nagios的日记
                     ....
              
     经过如此一番折腾、我想、对故障现场也大概有些理解了、这时、我们才可开始 troubleshoting、
     
     行文到此进入序幕了、既然是最后、那么问题又来鸟
     大伙都听过"水果蔬菜在'最后一公里' 坐地涨价"的老大难问题吧
     这是网络上大行其是的最后一公里问题哦、木有听过的、感觉google
     但、、、、别捉急呀、我们不谈最后、在服务器消除问题时、还看现在哈
     来来、来、排好队、1、2、3、、大家一同喊、我们的目标是"最前十分钟"  !!!

文章结束给大家分享下程序员的一些笑话语录: 程序员打油诗   
  写字楼里写字间,写字间里程序员;
  程序人员写程序,又拿程序换酒钱。
  酒醒只在网上坐,酒醉还来网下眠;
  酒醉酒醒日复日,网上网下年复年。
  但愿老死电脑间,不愿鞠躬老板前;
  奔驰宝马贵者趣,公交自行程序员。
  别人笑我忒疯癫,我笑自己命太贱;
  不见满街漂亮妹,哪个归得程序员。

原文地址:https://www.cnblogs.com/xinyuyuanm/p/3085930.html