如何定位问题
- 先猜可能出现问题的地方,检查是否是改地方地方出现的问题。
- 如果猜不对,去谷歌检查是否有现成的答案。
- 如果谷歌没有现成答案,去技术官网看看,是否找到答案。
- 重新分析问题,不要一直咬着猜的地方不放。
- 首先检查自己写的代码是否有问题。
- 检查第三包是否有问题,可以在github上问问题。
案例:
屏幕墙一个小时后接收不到图片的问题
- 猜是socket.io 的机制,检查没有这个机制
- 一直咬着这个机制不放,谷歌很少相关内容,唯一相关的还是四年前的,说是socket.io 为了防止恶意链接,会隔一个小时清一次
- 去github提问,得到的回答是,socket.io 没有这个机制,会提出会不会是client与service中间的代理问题
- client与service直连,发现还是存在这个问题,所以排除了是代理问题。
- 后面无意发现连接没有断,图片却接收不到,怀疑是redis的问题
- 检查redis,发现果然是redis的问题,redis设置了一个小时后过期
运维问题定位:
- 配置是否正确(账号密码,ip)
- 网络是否有问题(防火墙)
- 版本是否有问题
- 权限问题
- 缓存问题:清缓存,重启
- 不要太相信自己的逻辑判断,可以做一些冗余操作:比如定位nacos无法持久化问题,如果不连数据库,用默认数据库没有问题,连mysql就报错:no database set 就判断是docker容器不能访问外部mysql的问题,但db服务也可以访问mysql就排除了,结果真的是容器不能访问mysql的问题,把blind-address 改为0.0.0.0就可以了