💥昨天掘金 Web 端突然登不上了,一次网络异常的排查记录

故事背景

昨天上午,我像往常一样打开电脑,准备刷会掘金,结果网页一直卡在登录界面,疯狂转圈圈就是不加载

我还以为是我自己电脑网络出了问题,但上百度、知乎啥的都没问题。

用手机一打开掘金,秒进!问了下同事,他们也都能正常登录。

一开始还以为是 DNS 出了点幺蛾子,我立刻祭出经典网络排障大招:

bash 复制代码
ipconfig /flushdns

刷新 DNS 配置后重启浏览器,一点用都没有,还是转圈转圈转圈...

🤔 是不是掘金在精准打击我?

我开始怀疑是不是掘金搞了什么 AB 测试,或者我成了某种「灰度用户」?

于是我在手机端打开掘金,发了个沸点,问问是不是有人也遇到这个问题。

结果还真有几个网友评论说上不去,但大部分人都没啥问题。

这时候我感觉自己可能是那万分之一被眷顾的倒霉蛋

🔍 开始排查:ping 一下 juejin.cn

等到下午4点钟都还没修复,我等不急了,看看能不能自己修复一下这个问题。先ping一下juejin.cn看看咋回事。

我再让同事帮忙ping一下,他是可以ping通的。我才意识到我们访问的是不同的节点,我ping他的地址也能ping通,我脑海里突然有一个绝妙的想法。

tips: 过一段时间ping掘金都是不同的ip,但是他的ip都能ping通,我的ip都ping不通,估计是某个集群的节点都挂了。

💡 灵机一动:改 hosts 文件!

既然我同事的 IP 能正常访问,那我可以:

  1. 拿到他 ping 通的 IP;
  2. 修改本地 hosts 文件,把 juejin.cn 指向这个 IP。

Windows 下 hosts 文件路径:

makefile 复制代码
C:\Windows\System32\drivers\etc\hosts

我加了一行:

bash 复制代码
x.x.x.222 juejin.cn

保存之后清缓存,重启浏览器,奇迹出现了

✨ 掘金网页终于可以正常访问了!

🔄 继续深挖:负载均衡的问题?

掘金 Web 后端肯定是有用负载均衡的,常见的几种策略有:

  • round-robin:轮询分发
  • ip_hash:按 IP 分发
  • weight:加权分发

我和同事的公网 IP 是一样的,那就不应该被分到不同节点。

我开始怀疑是不是用了 源端口 来参与 Hash 了。

查了下资料,像 LVS 或某些 Nginx 配置,确实可能用五元组(源 IP、目标 IP、源端口、目标端口、协议) 来决定访问哪个节点。但是每次访问HTTP请求,端口应该都是会变的,所以也不应该是端口的问题。最后怀疑大概率是用的MAC地址做HASH,因为MAC地址是不变的,所以我试了很多次都登录不了

🧠 小结:可能是某个网关节点挂了

综合判断,很可能是:

  • 掘金某个后端节点挂了;
  • 但 DNS 解析或者负载策略还会把小部分用户分发到这个挂掉的节点;
  • 所以只有"极少部分人"打不开掘金;
  • 修改 hosts 指向健康 IP 是临时绕过方法。

📢 想对掘金说几句话

如果掘金的朋友看到这篇文章:

👉 你们后端某个节点可能挂了,可以检查下是不是健康检查没生效;

👉 顺便问问,要不要给我来个内推?我都给你们排完错了😂


📌 最后

这次经历虽然只是一次小问题,但也提醒了我们:

  • 平常多学一点网络知识真的能救命;
  • 多一些动手排查的勇气;
  • 最后别忘了写成文章分享出来,也许就能帮到别人啦。

如果你也遇到类似情况,欢迎评论区一起交流!

相关推荐
短剑重铸之日6 小时前
《SpringCloud实用版》 Seata 分布式事务实战:AT / TCC / Saga /XA
后端·spring·spring cloud·seata·分布式事务
FAFU_kyp6 小时前
RISC0_ZERO项目在macOs上生成链上证明避坑
开发语言·后端·学习·macos·rust
qq_12498707536 小时前
基于springboot的会议室预订系统设计与实现(源码+论文+部署+安装)
java·vue.js·spring boot·后端·信息可视化·毕业设计·计算机毕业设计
女王大人万岁7 小时前
Go语言time库核心用法与实战避坑
服务器·开发语言·后端·golang
J_liaty7 小时前
Spring Boot + MinIO 文件上传工具类
java·spring boot·后端·minio
短剑重铸之日7 小时前
《SpringCloud实用版》Stream + RocketMQ 实现可靠消息 & 事务消息
后端·rocketmq·springcloud·消息中间件·事务消息
没有bug.的程序员7 小时前
Spring Boot 事务管理:@Transactional 失效场景、底层内幕与分布式补偿实战终极指南
java·spring boot·分布式·后端·transactional·失效场景·底层内幕
LuminescenceJ8 小时前
GoEdge 开源CDN 架构设计与工作原理分析
分布式·后端·网络协议·网络安全·rpc·开源·信息与通信
Tony Bai8 小时前
【分布式系统】11 理论的试金石:用 Go 从零实现一个迷你 Raft 共识
开发语言·后端·golang
短剑重铸之日8 小时前
《SpringCloud实用版》统一认证授权:Spring Authorization Server + OAuth2 + JWT 生产级方案
java·后端·spring·jwt·oauth2