服务器架构服务器系统为centos7
首先需要知晓系统的对外的架构
一般架构:
1.域名--->云服务器(ECS)
【Linux服务器故障排查基本方案】2.域名--->CDN--->云服务器(OSS)
3.域名--->CDN--->云服务器ECS+数据库RDS+缓存redis
4.域名--->CDN--->负载均衡--->云服务器ECS+数据库RDS(主从)+缓存Redis
5.域名--->CDN-->WAF防火墙--->负载均衡--->云服务器ECS+数据库RDS(主从)+缓存Redis
再根据实际情况出现的问题,一步步排查 。
文章插图
发现问题一、发现问题首先发现问题,及时确定哪个服务出现问题,以便方便快速定位问题 。查找对应的域名和设备
Zabbix监控发钉钉告警
文章插图
阿里云监控告警短信
【阿里云】尊敬的***,云监控-云数据库RDS版<华南1(深圳)-*****-只读>于<09:54>发生报警,CPU使用率(91.88>=80),持续时间4分钟
3.shell脚本邮件告警4.其他同事客服、市场同事等钉钉、电话报告出现的问题
二、快速定位问题
网络带宽(CDN是否异常)域名是否解析到源站
登录阿里云CDN后台查看相应流量
负载均衡检查负载均衡是否正常运行,是否流量异常
应用层服务器ECS服务器负载是否正常、cpu、内存负载是否过高,硬盘使用率是否达到100%等
缓存服务器redis服务器负载是否正常、内存使用率如何
数据库服务器数据库连接数是否正常
列出当前用户的所有连接信息;
show full processlist;
杀进程,时长消耗太长的sql进程select concat('kill ', id, ';') from information_schema.processlist where command != 'Sleep' and time > 2*60 order by time desc;
让将sql语句发给后端研发分析远程连接服务器问题:CPU高,负载高,访问慢(数据库正常)系统层面查看负载查看负载、CPU、内存、上线时间、高资源进程
# top安装: yum -y install htop# htop
查看top服务器负载,内存消耗,df -h查看硬盘topdf
查看Nginx日志如果有nginx日志,进入nginx日志目录按照日志大小排列
判断日志访问、相应时长,url等
cd /data/wwwroot/logll -Srhtail -f XXX.XXX.COM-access.log分析日志,找出最多的IP日志、最多的URL等GoAccess 、ELK后台查看日志
查看磁盘使用情况df -h
查看磁盘当前情况IOStat -x -k 3 3avg-cpu:%user%nice %system %iowait%steal%idle3.700.002.250.410.0093.64Device:rrqm/swrqm/sr/sw/srkB/swkB/s avgrq-sz avgqu-szawait r_await w_awaitsvctm%utilvda0.010.830.301.4811.3412.1326.300.016.157.415.890.240.04vdb0.000.170.020.280.082.7519.150.003.222.013.290.260.01vdc0.100.843.090.56105.2220.5768.940.027.963.2933.741.330.49如果发现当前磁盘忙碌,则查看是哪个 PID 在忙碌:安装 yum install -y iotop# iotop -o -P -k -d 5
查看对外服务和端口# netstat -tunplActive Internet connections (only servers)Proto Recv-Q Send-Q Local AddressForeign AddressStatePID/Program nametcp00 0.0.0.0:629200.0.0.0:*LISTEN29177/vsftpdtcp00 0.0.0.0:80800.0.0.0:*LISTEN4393/httpdtcp00 0.0.0.0:73000.0.0.0:*LISTEN4697/php-fpm: maste
查看 PID 具体在安装yum install lsoflsof -p PIDlsof -p 29177lsof -p 4697
查看系统日志tail -400f /var/log/messagestail -f /var/log/messagestail -n100 /var/log/messageshead -n100 /var/log/messages
查看简化线程树pstree -a >> /root/pstree.log
网络问题ping域名ping www.XXX.com
查看网络节点情况安装: yum install -ytraceroutetraceroute www.baidu.com
问题:CPU 低,负载高,访问慢(数据库)判断的数据库1.慢查询检查慢查询日志,可能是慢查询引起负载高,根据配置文件查看存放位置:log_slow_queries2.是否有系统瓶颈升级系统cpu、内存、硬盘,
优化架构增加主从,一主多从等 。
3.sleep连接是否过多
show full processlist;
4.查看最大连接数查看设置的最大连接数show variables like 'max_connections';重新设置最大连接数set GLOBAL max_connections=300
Nginx防护基本命令如果有一些异常访问,可以加入配合阿里云的WAF 。访问最多真实用户的IP
cat www.XXXX.com-access.log |awk '{print $5}'| awk -F":" '{print $NF}' |sort|uniq -c|sort -nr|head -10
查看访问排行前10的url
推荐阅读
- Linux内核内存分配函数之kmalloc
- 汽车|段子成真!奥迪车出现背剑“刺客”故障灯 女司机紧急求助交警
- 飞机|印度一波音737突发故障17人重伤 乘客:感觉像从100层楼上掉下来
- 一文让你彻底搞清楚,Linux零拷贝技术的那些事儿
- Linux系统中的库
- 如何在 Linux 中清理 Snap 包的版本
- Linux搭建rsync备用服务器,及配置文件详解
- 域控崩溃了、域服务器坏了,完全不可能启动了,怎么办?
- 虚拟主机和云服务器有什么区别?
- 故障分析 | 数据库故障 MHA 未切换