首页 > 其他分享 >记一次线上服务器问题排查过程

记一次线上服务器问题排查过程

时间:2023-04-27 13:13:36浏览次数:36  
标签:服务 问题 排查 线上 服务器 日志 cloudflare 客户端

问题描述

前几天我们更新线上服务器,使用对应的新版客户端连接时,怎么都连不上,如果直接连接其他服,比如我们内部的测试服或者审核服,却一切正常。同时,如果使用老包连接服务器,也是正常的

这个问题查的头疼,每一步都超出我的理解范围

排查过程

首先第一步,我们在服务器接口的必经之路上增加了一个调试日志,只要消息到了服务端,就必定会触发这条日志,然后使用客户端发起请求,发现服务器日志并没有有效记录

但是!老版的客户端是存在有效日志的,这就奇怪了。接下来排查方向要优先确定正式服的环境和测试服环境到底存在什么差别

我司正式服的部署和维护,都由运维来统一管理,所以他们做了什么开发一般是不太清楚的

此时我使用 postman 模拟刚刚的 API,发送至服务器。观察日志发现,postman 的消息可以正确收到,且有对应的日志信息。观察 postman 返回值,可以发现有 cloudflare 相关的内容,因此可以猜测运维在我们服务器前,架设了 cloudflare 的服务,用来隐藏服务器的真实 IP 地址

那么此时我们可以得到如下两个结论:

  • postman 发出的消息可以正确收到
  • 线上环境增加了 cloudflare 服务

目前的有效信息还是非常有限,接下来就需要使用 Surge 这个工具,来定位网络问题了,我使用 Surge 接管 Editor 和真机的所有请求,既然服务是由 cloudflare 提供的,我把 Surge 的 DNS 解析服务器强制设为 1.1.1.1,同时这条域名的所有请求都转发到 warp+ (cloudflare 家的代理) 中

发现依然不通,无论是服务器日志,还是 nginx 日志都没有收到这个请求,那么可以得到如下结论

  • 与 DNS 解析无关
  • 与 代理 无关

接着观察 http 发出的状态,在我们游戏中,这个 API 的访问会有 retry 机制,默认重试 3 次,但是奇怪的是客户端建立了 3 次 tcp 通道

正常 http 请求我们会设置 keep alive 时间,短时间的请求都在一个通道里完成,节约反复握手时间

那么出现这种情况就说明握手时,客户端建立的通道被服务器强制断开了。更奇怪的是,http 协议层不管是客户端还是服务器,我们都没动过,此时开始检查 API 参数是否发生变化,根据 git 的日志可以发现,确实有一个参数名发生了变化,由 A 改成了 B

猜测可能因为参数名发生变化,导致 cloudflare 提供的服务解析失败,接着尝试改回客户端参数,然后看 nginx 日志是否正常

发现依然没有日志,这一步已经完全超出了我的认知范围,但是种种迹象都在暗示 cloudflare 提供的服务跪了

然后直接放弃 DNS 解析,强制在 host 中绑定域名到我们服务器的真实 IP 上,从而绕过 cloudflare 的服务,此时惊喜的发现所有服务一切正常。这时我们就能确定就是 cloudflare 的问题

查到问题后续就是运维的工作了,至于为什么 cloudflare 存在这个问题,目前还不得而知

最后

云服务厂商出问题在我司发生已经是第二次了,上一次是阿里云,对于开发者来说,想要把问题锁定在云服务上,过程还是比较艰辛的

cloudflare 的问题排查了几个小时,只能各种猜测挨个尝试,同时学会这些网络分析工具也非常有必要,如果没有这些软件的辅助,锁定问题范围,查到问题不知道什么时候了

标签:服务,问题,排查,线上,服务器,日志,cloudflare,客户端
From: https://www.cnblogs.com/LiuOcean-Blog/p/ji-yi-ci-xian-shang-fu-wu-qi-wen-ti-pai-cha-guo-ch

相关文章

  • 记一次线上服务器问题排查过程
    问题描述前几天我们更新线上服务器,使用对应的新版客户端连接时,怎么都连不上,如果直接连接其他服,比如我们内部的测试服或者审核服,却一切正常。同时,如果使用老包连接服务器,也是正常的这个问题查的头疼,每一步都超出我的理解范围排查过程首先第一步,我们在服务器接口的必经之路上......
  • 记一次线上服务器问题排查过程
    问题描述前几天我们更新线上服务器,使用对应的新版客户端连接时,怎么都连不上,如果直接连接其他服,比如我们内部的测试服或者审核服,却一切正常。同时,如果使用老包连接服务器,也是正常的这个问题查的头疼,每一步都超出我的理解范围排查过程首先第一步,我们在服务器接口的必经之路上......
  • hncloud:如何提高游戏服务器访问速度
    对于游戏行业来说,游戏服务器的速度直接影响到玩家的游戏体验。如果服务器速度太慢,游戏画面卡顿、延迟、丢包等问题将会大大影响游戏的流畅度和用户的满意度。所以,如何提高游戏服务器的访问速度,让游戏变得更加畅快呢?游戏企业可以从选择游戏服务器的角度进行改进。选择高速......
  • C++ linux epoll并发服务器模型初探
    socket通讯流程图最简单的可以通讯的C++服务器端代码:#include<stdio.h>#include<unistd.h>#include<sys/types.h>#include<sys/socket.h>#include<arpa/inet.h>#include<netinet/in.h>#defineSERV_PORT8000intmain(void){intlfd......
  • 远程服务器画面GUI传输到本地显示
    远程服务器画面GUI传输到本地显示这篇文章主要介绍远程服务器(Ubuntu系统)的GUI画面传输到本地(本地Ubuntu或者Windows)显示的方法。一远程Ubuntu系统-->本地Windows系统WIndows配置XMing下载安装XmingXming安装目录下打开X0.hosts,将服务器ip添加进去保存打开Xmin......
  • 60秒内检查Linux服务器性能,你能做到吗?
    导读如果你的Linux服务器突然负载暴增,告警短信快发爆你的手机,如何在最短时间内找出Linux性能问题所在?来看Netflix性能工程团队的这篇博文,看它们通过十条命令在一分钟内对机器性能问题进行诊断。概述:通过执行以下命令,可以在1分钟内对系统资源使用情况有个大致的了解uptim......
  • layui选择多张图片上传多图上传到服务器保存
    多图上传在一些特殊的需求中我们经常会遇到,其实多图上传的原理大家都有各自的见解。对于Layui多图上传和我之前所说的通过js获取文本框中的文件数组遍历提交的原理一样,只不过是Layui中的upload.render方法已经帮我们封装好了,我们只管调用即可,也就是说你选中了几张图片,那么将会向后......
  • FTP服务器搭建
    使用FileZillaServer搭建FTP服务,方法如下: 一、安装 二、配置 三、使用建议使用FlashFXP工具,较稳定,还能断点传输。 ......
  • 你知道带宽50M的服务器能带动多少人同时在线吗?
    随着互联网的飞速发展,服务器带宽需求从初始的3M/10M到现在基础的50M/100M,越来越多的业务对服务器带宽要求越来越高,比如视频服务器、游戏服务器、应用程序服务器等。问题来了,你知道50M带宽的服务器可以带动多少人吗? 50M带宽能带动多少人并没有明确的算法,不同的业务类型会有不......
  • 配置harbor服务器的https
    一、配置CA证书(1)创建工作目录[root@docker~]#mkdir-pv/project1/harbor/certs/{ca,harbor-server,docker-client}(2)进入到harbor证书存放目录[root@docker~]#cd/project1/harbor/certs/[root@dockercerts]#lltotal0drwxr-xr-x2rootroot6Feb2709:06ca......