蓝盟IT外包,IT外包操作和维护人员处理服务器故障的方法摘要

发布者:上海IT外包 发布时间:2019/3/28 9:17:46来源:www.linemore.com

      当我们的团队进行以前公司的运营,优化和扩展时,我们遇到了各种不同规模的系统和基础设施设备(大型系统,如CNN或世界银行系统)。如果你赶上紧张的时间,惊人的技术平台,缺乏信息和文档,基本上这个过程将让我们留下深刻的记忆是痛苦的。
  在服务器发生故障的情况下,很少考虑问题的原因。我们基本上从以下步骤开始:
  首先,尝试找出问题的原因和结果
  不要立即卡在服务器前面,您需要了解该服务器存在多少已知情况,以及故障的具体情况。否则你可能会毫无目标。
  必须澄清的问题是:
  故障的表现是什么?没有反应?报告错误?
  什么时候发现故障?
  故障是否可重现?
  没有规则(例如每小时出现一次)
  最后一次在整个平台(代码,服务器等)上更新内容是什么时候?
  受故障影响的特定用户组是什么(登录,退出,地理位置......)?
  可以找到基础设施(物理,逻辑)的文档吗?
  有监控平台吗? (例如Munin,Zabbix,Nagios,New Relic ......任何东西都可以)
  有日志可以查看吗? (例如Loggly,Airbrake,Graylog ......)
  最后两个是最方便的信息来源,但没有太多的希望,基本上没有一个会。我只能继续探索。
  第二,谁在那里?
  $ w
  $ last
  使用这两个命令可以查看谁在线以及哪些用户访问过。这不是关键步骤,但最好不要在其他用户工作时调试系统。有一种说法是一座山不能容纳两只老虎。 (在厨房做饭就够了。)
  3.之前发生了什么?
  $历史
  查看在先前服务器上执行的命令。看待它,以及我之前看到的信息总是如此,这应该有点用处。另外,作为管理员,请注意不要使用自己的权限来侵犯他人的隐私。
  首先让我提醒您,您可能需要更新HISTTIMEFORMAT环境变量以显示执行这些命令的时间。当你看到一堆你不知道的命令时,也会很疯狂。
  第四,现在跑步的过程是什么?
  $ pstree -a
  $ ps aux
  这都是关于查看现有流程的。 ps aux的结果相当混乱。 pstree -a的结果相对简单明了,可以看到正在运行的进程和相关用户。五,网络服务进行监控
  $ netstat -ntlp
  $ netstat -nulp
  $ netstat -nxlp
  我通常分别运行这三个命令,我不希望一次看到列出的所有服务。也可以使用Netstat -nalp。但是,我永远不会使用数字选项(一个草率的视图:IP地址看起来更方便)。
  查找所有正在运行的服务并检查它们是否应该运行查看每个侦听端口。 netstat显示的服务列表中的PID与ps aux进程列表中的PID相同。
  如果服务器上同时运行多个Java或Erlang进程,则能够通过PID单独找到每个进程非常重要。
  通常,我们建议在每台服务器上运行较少的服务,并在必要时添加服如果您发现服务器上有三十或四十个侦听端口,则进行记录。如果有时间,请清理并重新组织服务器。
  六,CPU和内存
  $ free -m
  $正常运行时间
  $ top
  $ htop
  请注意以下问题:
  有空余的记忆吗?服务器是否在内存和硬盘之间交换?
  还有剩余的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
  这些命令对于调试后端性能非常有用。
  检查磁盘使用情况:服务器硬盘是否已满?
  是否启用了交换模式(si/so)?
  CPU占用谁:系统进程?用户进程?虚拟机?
  Dstat是我的最爱。使用它来查看谁在做IO:MySQL是否正在占用所有系统资源?还是你的PHP流程?
  九,挂载点和文件系统
  $ mount
  $ cat/etc/fstab
  $ vgs$ pvs
  $ lvs
  $ df -h
  $ lsof + D//*小心不要杀你的盒子* /
  总共安装了多少个文件系统?
  是否有特定于服务的文件系统? (比如MySQL?)
  什么是文件系统的挂载选项:noatime?默认?是否将文件系统重新安装为只读?
  是否有剩余的磁盘空间?
  是否删除了大文件但没有清空?
  如果磁盘空间有问题,您是否仍有空间扩展分区?
  十,内核,中断和网络
  $ sysctl -a | grep ...
  $ cat/proc/interrupts
  $ cat/proc/net/ip_conntrack/*在繁忙的服务器上可能需要一些时间* /
  $ netstat
  $ ss -s
  您的中断请求是否以平衡方式分配给CPU,还是由于大量网络中断请求或RAID请求而导致CPU核心过载?
  SWAP交换的设置是什么?对于工作站,swappinness设置为60,但它对服务器有好处:最好不要让服务器进行SWAP交换,或者读取和写入磁盘将锁定SWAP进程。
  conntrack_max是否足以处理服务器上的流量?
  不同状态(TIME_WAIT,...)中TCP连接时间的设置是什么?
  如果要显示所有现有连接,netstat将更慢。您可以先使用ss查看整体情况。
  您还可以查看Linux TCP调优,以了解网络性能调优的一些关键点。
  XI,系统日志和内核消息
  $ dmesg
  $ less/var/log/messages
  $ less/var/log/secure
  $ less/var/log/auth
  查看错误和警告消息,例如,查看是否有很多连接?
  查看是否存在硬件错误或文件系统错误?
  分析这些错误事件是否可以及时与之前发现的嫌疑人进行比较。
  十二,定时任务
  $ ls/etc/cron * + cat
  $ for user in $(cat/etc/passwd | cut -f1 -d:);做crontab -l -u $ user; DONE是否有经常运行的计时任务?
  有些用户是否提交了隐藏的计划任务?
  如果发生故障,是否只有正在进行的备份任务?
  十三,应用系统日志
  这里有更多的事情要分析,但我担心作为操作和维护人员你没有时间仔细研究它。专注于明显的问题,例如在典型的LAMP(Linux + Apache + Mysql + Perl)应用程序环境:中
  Apache&Nginx;查找访问和错误日志,直接查找5xx错误,并查看是否存在limit_zone错误。
  MySQL的;在mysql.log中查找错误消息以查看是否存在任何损坏的表,如果存在innodb修复进程,如果存在磁盘/索引/查询问题。
  PHP-FPM;如果设置php-slow日志,请直接查找错误消息(php,mysql,memcache,...)。如果未设置,请快速设置。
  漆;在varnishlog和varnishstat中,检查命中/未命中率。查看配置信息中是否缺少任何规则,以便最终用户可以直接攻击您的后端?
  HA-代理;后端的状态是什么?健康检查是否成功?前端或后端的队列大小是否达到最大值?
  结论
  在这5分钟后,您应该清楚以下内容:
  服务器上运行的技巧是什么?
  此故障似乎与IO /硬件/网络或系统配置(问题代码,系统内核调整......)有关。
  此故障是否具有您熟悉的某些功能?例如,数据库索引使用不当或Apache后台进程太多。
  您甚至可以找到故障的真正来源。即使你没有找到它,并且你已经弄清楚了上述情况,你现在有条件深入挖掘。继续努力!

 

上海IT外包服务网 链接:http://www.linemore.com

>
400-635-8089
立即
咨询
电话咨询
服务热线
400-635-8089
微信咨询
微信咨询
微信咨询
公众号
公众号
公众号
返回顶部