💥昨天掘金 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 是临时绕过方法。

📢 想对掘金说几句话

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

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

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


📌 最后

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

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

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

相关推荐
超浪的晨22 分钟前
Java UDP 通信详解:从基础到实战,彻底掌握无连接网络编程
java·开发语言·后端·学习·个人开发
AntBlack30 分钟前
从小不学好 ,影刀 + ddddocr 实现图片验证码认证自动化
后端·python·计算机视觉
Pomelo_刘金1 小时前
Clean Architecture 整洁架构:借一只闹钟讲明白「整洁架构」的来龙去脉
后端·架构·rust
双力臂4041 小时前
Spring Boot 单元测试进阶:JUnit5 + Mock测试与切片测试实战及覆盖率报告生成
java·spring boot·后端·单元测试
水瓶_bxt1 小时前
Centos安装HAProxy搭建Mysql高可用集群负载均衡
mysql·centos·负载均衡
midsummer_woo3 小时前
基于spring boot的医院挂号就诊系统(源码+论文)
java·spring boot·后端
Olrookie3 小时前
若依前后端分离版学习笔记(三)——表结构介绍
笔记·后端·mysql
沸腾_罗强4 小时前
Bugs
后端
一条GO4 小时前
ORM中实现SaaS的数据与库的隔离
后端
京茶吉鹿4 小时前
"if else" 堆成山?这招让你的代码优雅起飞!
java·后端