1. 排障
分类 | 详细信息 |
系统类故障 | 负载高,涉及 cpu、内存、磁盘等方面问题。 |
HTTP 状态码 | 根据不同的状态码进行分析排查。 |
网络故障 | 网站访问慢。 |
具体服务与环境 | |
1.1. 系统类故障排查与解决
首先,通过监控系统发现故障后,立即使用堡垒机连接进行检查,借助 “w” 和 “top” 命令判断是否为误报。接着,根据提示定位问题,利用 “top” 命令、“ps aux” 和 “iotop” 命令确定导致问题的进程。然后,从进程进一步定位到服务,主要通过查看日志进行排查。
对于不同类型的可能故障服务,有特定的分析方法。对于 Java 应用(如 jar 文件、Tomcat),可以使用日志以及 “jps”“jstack”“jmap” 和 “mat” 工具进行详细分析。对于 ngx 和 php 服务,需要查看日志、访问日志和错误日志,并关注访问量。对于数据库服务,进入数据库使用 “show processlist\G” 查看,同时检查慢查询和慢查询日志,并将结果发送给开发人员或数据库管理员(DBA)进行检查优化。
● 整体流程:
● 通过监控得知有故障.
● 堡垒机连接,检查是否误报. w,top.
● 根据提示,定位问题,定位导致问题的进程.
○ top命令,ps aux
○ iotop命令
● 进程-->服务
● 具体排查服务,一般看日志.
● jps,jstack,jmap
● mat工具
● 磁盘使用率
可能故障的服务 | 分析 |
java 应用(jar,tomcat) | 通过查看日志、使用 jps(查看 Java 进程)、jstack(查看 Java 线程栈)、jmap(生成堆转储快照)、mat(内存分析工具)等方式进行分析。 |
ngx,php | 查看日志(包括访问日志和错误日志),分析访问量以确定故障原因。 |
数据库 | 进入数据库执行show processlist \G 查看当前数据库连接状态,分析慢查询以及慢查询日志,并发送给开发人员或数据库管理员(DBA)进行检查优化。 |
2. 状态码
目标:
1️⃣熟练掌握每个状态码及含义
2️⃣状态码排查基本流程
3️⃣自己模拟每一个
分类 | |
2Xx | 一切正常 ok |
3XX | 正常 , 跳转 |
4Xx | 故障,用户 |
5xx | 故障,服务器 |
状态码 | 描述 |
200 | ok |
301 | 永久 |
302 | 临时 |
304 | 浏览器缓存 |
401 | 认证问题 |
403 | forbidden 权限拒绝,原因可能为:1.没有权限;2.首页文件不存在 |
404 | not found 找不到 |
413 | 上传内容过大 |
500 | Internal Error 内部错误,可能原因有服务器配置问题(如 selinux、php 插件没有安装等) |
502 | Bad Gateway 网关错误(如 lnmp/lnmt/负载均衡 nginx 向后抛请求,后面没有响应) |
503 | 网站临时不可用 |
504 | Gateway Timeout 连接超时(可能由负载、网络连接问题引起) |
2.1. 排错流程 🌟🌟🌟🌟🌟
- nginx处理用户请求流程.(哪个虚拟主机再处理请求,是否经过调整(return,rewrite) ,是否有location 规则
https://www.processon.com/view/link/60aefce8f346fb715d52b6a9
- 访问页面查看状态(浏览器F12,通过命令行curl/wget)
- 通过日志(访问日志,错误日志)
2.2. 访问网站慢排查全流程
● 某个还是一堆用户
○ 某个用户,ping,telnet,tracert ,浏览器F12功能. 可能线路问题,CDN没有加速.
○ 一堆用户
■ 根据用户访问网站流程排查分析
■ DNS解析
■ CDN流量,带宽,命中率.
■ 负载
■ web
■ 数据库
■ 存储
■ 额外手段,F12功能,服务端抓包.
3. 网络
排查命令 | 作用 |
ping | 测试网络连接的可达性。 |
tracert/traceroute | 路由追踪命令,确定数据包从源主机到目标主机所经过的网络路径。 |
mtr | 实时更新的路由追踪命令,结合 traceroute 和 ping 的功能持续监测网络路径上的性能。 |
arp | 检查 ARP 缓存信息。 |
dig/host(linux) | 用于检查 DNS 解析是否正常(Linux 系统)。 |
nslookup(linux/win) | 用于检查 DNS 解析是否正常(Linux 和 Windows 系统)。 |
iftop/nethogs/nstat/ifstat | 查看网卡流量信息及情况。 |
● 通过各种命令排查
○ 线路问题
○ dns问题
● 公司内网
○ 排除法
4. 用户访问网站与故障
4.1. 概述
DNS解析
tcp/ip 3次握手
http 请求豹纹
网站架构处理
http 响应豹纹
tcp/ip 4次挥手
4.2. 详细过程
● DNS解析流程-CDN请求过程-WAF防火墙
● tcp/ip 3次握手
● http 请求豹纹
● 网站架构处理
● http 响应豹纹
● tcp/ip 4次挥手
4.3. D N S解析流程-CD N请求过程- WAF防火墙
● DNS : 厂商, dns解析命令
● CDN问题: :
○ 浏览器访问 检查是否经过CDN
○ 管理页面:CDN命中率90%以上
○ 检查cdn日志.
● WAF
● 建立监控: 71ce 监控宝
4.4. tcp / ip 3次握手
网站连接 情况 tcp连接情况 (监控)
4.5. 网站架构处理
云盾(态势感知)
负载均衡
web服务器(php,tomcat,nginx)
数据库
redis
存储
备份
....
通用: 遇到故障后,检查日志(没有日志输出日志, 日志不详细调整日志级别 debug )
1 ) 负载均衡
● 绕过负载直接访问后端节点.
● 配合负载,web访问日志,错误日志
● 抓包查看(tcpdump 抓包并保存, 通过wireshark查看)
2 ) web
● nginx
● php
● tomcat
● nginx处理用户请求过程
● tomcat 虚拟主机配置
● 配置nginx,tomcat,php日志
● nginx access.log error.log
● tomcat catalina.out
● php
○ php-fpm php-fpm.log php-fpm.conf
○ php 默认关闭输出到文件
root@web01 ~]# egrep '^log_errors |^error_log' /etc/php.ini
log_errors = On
error_log = /var/log/php_errors.log
3 ) 数据库
用户/数据库
数据库启动: 配合数据库日志 mariadb.log
4 ) 存储,备份. . . .
配置,日志
/var/log/messages /var/log/secure
5 )小结
核心配合故障提示
配合日志: 关键词汇,词汇附近进行翻译
辅助手段: 抓包(tcpdump,wireshark)
4.6. zabbix
● lnmp
● zabbix-server zabbix-agent
● 排错流程:
○ 前端报错: 404 500502 .... nginx ,php mysql 日志
○ 前端报错: 键值,监控项...........没有数据 ....
■ 服务端,客户端日志
■ zabbix_get
● 多个组件排查流程
● 通过故障提示,检查是大致哪个部分导致?
● 通过每个部分对应排错流程,排查
● 遇到故障,解决故障,总结故障
Comments NOTHING