服务器用netstat卡_Linux服务器上排除问题的基本步骤

ae4ebc0b046349c8be5dad74fca99cd7.gif

做为一个运维在遇到服务器故障时,问题出现的原因一般很少可以一下就想到。这时候我们就需要有条理的从几个方面入手排查,不要像无头苍蝇一样一头扎进去。

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

1、故障的表现是什么?无响应?报错?2、故障是什么时候发现的?3、故障是否可重现?4、有没有出现的规律(比如每小时出现一次)5、最后一次对整个平台进行更新的内容是什么(代码、服务器等)?6、故障影响的特定用户群是什么样的(已登录的, 退出的, 某个地域的…)?7、基础架构(物理的、逻辑的)的文档是否能找到?8、是否有监控平台可用?(比如Zabbix、 Nagios、 cacti… )9、是否有日志可以查看?(比如Loggly、Airbrake、 Graylog…)最后两个是最方便的信息来源。

二、有谁在?

用下面两个命令看看都有谁在线,有哪些用户访问过$ w$ last

三、之前发生了什么?

查看一下之前服务器上执行过的命令$ history正常情况我们运行history命令是不会显示命令被执行的时间的。所以我们还需要设置下HISTTIMEFORMAT的环境变量,命令如下:$ export HISTTIMEFORMAT='%F %T'

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

用下面两个命令可以看到正在运行的进程及相关用户,推荐用pstree$ pstree -a$ psaux

五、监听的网络服务

查看所有正在运行的服务,检查它们是否应该运行,下面3个命令可以分开查看,不至于一下子列出一大堆服务$ netstat -ntlp$ netstat -nulp$ netstat -nxlp

六、CPU和内存

通过下面4个命令检查1、还有空余的内存吗? 服务器是否正在内存和硬盘之间进行swap?2、还有剩余的CPU吗? 服务器是几核的? 是否有某些CPU核负载过多了?3、服务器最大的负载来自什么地方? 平均负载是多少?$ free -m$ uptime$ top$ htop

七、硬件

通过下面3个命令检查1、找到RAID卡 (是否带BBU备用电池)、 CPU、空余的内存插槽。根据这些情况可以大致了解硬件问题的来源和性能改进的办法2、网卡是否设置好? 是否正运行在半双工状态? 速度是10MBps? 有没有 TX/RX 报错?$ lspci$ dmidecode$ ethtool

八、IO 性能

通过下面4个命令检查(这些命令对于调试后端性能非常有用)1、服务器硬盘是否已满?2、是否开启了swap交换模式 (si/so)?3、CPU被谁占用:系统进程? 用户进程? 虚拟机?4、谁在进行 IO:是不是数据库吃掉了所有的系统资源? 还是你的PHP或jiva进程?$ iostat -kx 2$ vmstat 2 10$ mpstat 2 10$ dstat --top-io --top-bi

九、挂载点和文件系统

通过下面几个命令检查1、一共挂载了多少文件系统?2、有没有某个服务专用的文件系统? (比如数据库?)3、文件系统的挂载选项是什么:noatime? default? 有没有文件系统被重新挂载为只读模式了?4、磁盘空间是否还有剩余?5、是否有大文件被删除但没有清空?6、如果磁盘空间有问题,你是否还有空间来扩展一个分区?$ mount $ cat /etc/fstab$ vgs $ pvs$ lvs $ df -h$ lsof+D / /* beware not tokillyour box */

十、内核、中断和网络

通过下面命令检查1、你的中断请求是否是均衡地分配给CPU处理,还是会有某个CPU的核因为大量的网络中断请求或者RAID请求而过载了?2、SWAP交换的设置是什么?对于工作站来说swappinness 设为 60 就很好, 不过对于服务器就太糟了:你最好永远不要让服务器做SWAP交换,不然对磁盘的读写会锁死SWAP进程3、conntrack_max 是否设的足够大,能应付你服务器的流量?4、在不同状态下(TIME_WAIT, …)TCP连接时间的设置是怎样的?5、如果要显示所有存在的连接,netstat 会比较慢, 你可以先用 ss 看一下总体情况$ sysctl -a | grep...$ cat /proc/interrupts $ cat /proc/net/ip_conntrack  /* may take sometimeon busy servers */$ netstat$ ss -s

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

通过下面命令检查1、查看错误和警告消息,比如看看是不是很多关于连接数过多导致?2、看看是否有硬件错误或文件系统错误?3、分析是否能将这些错误事件和前面发现的疑点进行时间上的比对$ dmesg$ less /var/log/messages $ less /var/log/secure $ less /var/log/auth

十二、定时任务

通过下面命令检查1、是否有某个定时任务运行过于频繁?2、是否有些用户提交了隐藏的定时任务?3、在出现故障的时候,是否正好有某个备份任务在执行?$ ls  /etc/cron* +cat $ foruserin$(cat /etc/passwd|cut-f1 -d:);docrontab -l -u $user;done

十三、应用系统日志

这边以LAMP(Linux+Apache+Mysql+Perl)应用环境举例:1、Apache & Nginx; 查找访问和错误日志, 直接找 5xx 错误, 再看看是否有 limit_zone 错误2、MySQL; 在mysql.log找错误消息,看看有没有结构损坏的表, 是否有innodb修复进程在运行,是否有disk/index/query 问题3、PHP-FPM; 如果设定了 php-slow 日志, 直接找错误信息 (php, mysql, memcache, …),如果没设定,赶紧设定4、Varnish; 在varnishlog 和 varnishstat 里, 检查 hit/miss比. 看看配置信息里是否遗漏了什么规则,使最终用户可以直接攻击你的后端?5、HA-Proxy; 后端的状况如何?健康状况检查是否成功?是前端还是后端的队列大小达到最大值了?

继续关注,后续持续更新......

目前10000+人已关注加入我们

addf25aa8fe2c2abe9be2c1ac2b32888.gif 327eff11da09a9451a26478b1fcbd651.gif e580a95d64a8127b84545d23402b5739.gif d8e45bc85d6cf20d7e69ed3f8f60c48a.gif 2b55f73638560b157886ef534bb4dcbf.gif a450fee011a2b06006ee753b057e467c.gif 631f1b58355d6c8a85c50ec9f65673c2.gif 89ba92a04075b017ffedbacee71b8b09.gif

3cc2acb321311fda891da6cc7d2397f7.gif e139fca2c05830a92c32087f0943fc93.gif a35302f7b301618d78f25b3ec3bc5a00.gif 391b444f5f58e5615ede8ef89a0ae6f6.gif 35906a89f93ea839fe587bb80acb12aa.gif 40485120f2fc4e9379ad6d0e77888b32.gif 28043f8ed253ef9b1fe2c0ef6264f5b8.gif 115856771dea1012eee4b159ab505e3f.gif

a0aadbb5adcf6cd1b84052decba60e14.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值