Appearance
🚀 一个页面只有一个用户访问不了,其他用户都能访问,如何排查错误?
此题为腾讯云一面题我的回答:尽量让用户录制视频进行复线,如果能打开控制台网络面板,查看请求资源的情况,以及控制台输出的报错情况。后续的内容面试官让我从网络角度分析,例如:可能开了梯子、服务器防火墙对ip进行了拦截。面试官让我答了url加载流程来分析,首先就是dns域名解析错误、网关,和资源缓存过时的问题(不过一般像文件名是hash可以解决),用户过期的资源导致他访问的服务器崩掉(因为分布式的话,当前访问的用户就获取不到数据,其他用户可以),后续我说了要么就是强刷新和换网络,最后面试官也说了可以查看服务器日志,看用户请求是否到达服务器,来近一步缩小错误范围。
网络连接与权限检查:
检查用户网络连接:确认该用户的设备是否正常连接到网络,可以尝试访问其他网站或进行网络诊断。比如,在 Windows 系统中可使用
ping
命令测试与目标服务器的连通性,若出现请求超时等情况,说明网络连接存在问题。检查用户权限:核实该用户是否具备访问该页面的权限。有可能是用户账号出现异常,如未登录、登录状态过期、权限被限制或页面为特定用户组可见等,导致无法访问。
网关:网关可能设置了访问控制列表(ACL)或防火墙规则,错误地将该用户的设备 MAC 地址或 IP 地址列入了禁止访问互联网的列表中。这可能是由于管理员的误操作或者某些安全策略的错误配置导致。而其他用户不在禁止列表中,因此能够正常访问网页。进行网络更换,切换为热点之类的可以解决。
网关是一种网络设备,它充当不同网络之间的连接桥梁,实现网络之间的数据路由和协议转换,可以将其理解为一个网络的出入口。
在局域网中,网关通常是连接内部网络和外部网络(如互联网)的设备,比如路由器。当一台计算机要向其他网络中的设备发送数据时,它会先将数据发送到网关,网关再根据目标地址将数据转发到正确的网络中。同时,网关也会对数据进行一些处理,如检查数据的合法性、进行地址转换等,以确保数据能够在不同网络之间正确传输。
缓存:
- 清除浏览器缓存和 Cookie:浏览器缓存中存储了之前访问过的页面的临时文件,Cookie 则保存了用户登录状态等信息。有时缓存文件损坏或 Cookie 冲突可能会导致访问问题。可以让用户尝试清除浏览器缓存和 Cookie 后重新访问页面。
DNS 解析问题排查:(DNS 相关内容可以去「前端基础/网络」部分查看)
检查本地 DNS 缓存:用户设备可能缓存了错误的 DNS 记录。在 Windows 系统中,可以使用
ipconfig /flushdns
命令来清除本地 DNS 缓存,然后再次尝试访问页面,看是否能解决问题。如果缓存中存储了错误的域名与 IP 地址映射关系,就会导致用户无法正确访问页面,而其他未缓存该记录的用户则不受影响。用户设备缓存到错误的 DNS 记录可能有以下原因:
- DNS 服务器故障或错误配置
- 数据错误:如果云域名服务器或其他相关 DNS 服务器出现故障、数据错误或配置错误,可能会返回错误的 IP 地址信息。本地域名服务器在获取到这些错误信息后,会将其缓存并提供给用户设备,导致用户设备缓存错误的 DNS 记录(也就是在网络解析dns的时候,解析出错,被缓存了)。
- 用户设备设置问题
- 手动错误设置:用户或管理员可能在设备上手动设置了错误的 DNS 服务器地址,导致设备从错误的 DNS 服务器获取信息,进而缓存错误记录。
- 软件冲突或异常:某些软件可能会干扰设备的 DNS 设置或缓存机制。例如,一些安全软件、代理软件或网络管理工具可能会修改设备的 DNS 配置,导致缓存错误的 DNS 记录。
- 域名注册商或网站问题
- 域名信息变更:如果域名注册商对域名的 DNS 记录进行了更新,但相关的 DNS 服务器之间的同步出现问题,可能导致用户设备获取到旧的或错误的 DNS 记录并缓存。(只有当dns缓存时间过期后,本地的缓存才会去获取新的ip解析)
- 网站故障转移:网站在进行服务器故障转移或迁移时,如果 DNS 配置没有及时正确更新,也可能导致用户设备缓存到指向错误服务器的 DNS 记录。
- DNS 服务器故障或错误配置
检查 DNS 服务器设置:确认用户设备使用的 DNS 服务器是否正确配置。如果用户手动设置了 DNS 服务器,可能该服务器出现故障或配置错误。可以尝试将 DNS 服务器设置为自动获取,或者更换为其他可靠的公共 DNS 服务器,如谷歌的 8.8.8.8 或阿里云的 223.5.5.5 等,然后重新访问页面。
谷歌的 8.8.8.8 和阿里云的 223.5.5.5 都是公共 DNS 服务器的 IP 地址。公共 DNS 服务器是由互联网服务提供商或其他组织提供的,可供公众免费使用的 DNS 服务器。用户可以在自己的设备上将这些公共 DNS 服务器的 IP 地址设置为首选 DNS 服务器,当设备需要进行域名解析时,就会向这些公共 DNS 服务器发送查询请求。
用户如何修改本地的dns服务器缓存记录:
- 通常情况不支持直接对本地dns缓存进行修改,但是一些 VPN 软件为了实现网络访问的转接,也会修改设备的 DNS 设置,如果设置不当,就可能出现域名解析错误的情况。
如何将本地dns服务器切换为公共dns服务器:
- Mac 系统
- 点击苹果菜单,选择 “系统偏好设置”。
- 在系统偏好设置中,点击 “网络”。
- 在网络窗口中,点击 “高级” 按钮。
- 在高级设置窗口中,点击 “DNS” 选项卡。
- 在 DNS 选项卡中,点击 “+” 按钮添加公共 DNS 服务器地址,点击 “确定” 按钮保存设置。
服务器端检查
查看服务器日志:在服务器端查看访问日志,查找该用户的访问记录,看是否有错误信息或异常情况。例如,是否存在针对该用户 IP 地址的访问限制或服务器返回的错误代码,这有助于确定问题是出在服务器端还是客户端。
检查用户相关配置:查看服务器上与该用户相关的配置是否正确,是否存在针对该用户的特殊限制或错误配置。