背景

以前大体介绍过,我们这边是做运维平台的。如果要形象化理解,那么,比如jenkins这种喜闻乐见的软件大致了解吧,jenkins就经常需要同步文件/版本包到远程机器上,jenkins怎么实现的,没去了解。

我们这边算是自研了类似jenkins这类软件,其中,同步文件主要用的是rsync工具,作为非专业运维,来现在公司之前,甚至没用过rsync,scp用得更多。

来了之后也没怎么用这个,因为我没负责这块业务,自己事情也多,所以就懒了。

这次是同事遇到相关问题,我就带着对rsync的一知半解,参与了排查,所幸问题不难,解决了。

问题描述

这个图,因为是公司内的图,所以打码比较厉害。

简单来说,就是客户端机器通过rsync命令,同步本机的一个文件到target服务器的21000端口(target服务器上的21000端口有rsync的服务端在监听,负责接收文件)。

然后运行后,输出了一行提示:

connected to target服务器

就卡住不动了。

然后再过上10多s,程序才正常跑完。

同事也很纳闷,要同步的文件才2kb,怎么要10多s呢?

问题分析过程

熟悉我的同学可能知道,我有点喜欢抓包(甚至有时候,应该先去看日志才是最优的,但就是想不起来先去看日志)

我就在群里看着上面那个图,发了条抓包语句,让他试试。

你这可能得抓包。
tcpdump -i eth1 host target服务器 and tcp port 21000 -w 21000.pcap

这条语句,意思就是,在eht1网卡上抓包,因为tcp是四元组嘛(源端主机、源端端口、目的端主机、目的端接口),我们这里就是抓host为“target服务器”且端口为21000的包,然后写到21000.pcap这个文件。

然后过了一会想起来,这个是线上机器,写到21000.pcap这个文件后,也没法下载到本机来分析。

于是就让同事换了个命令去执行:

tcpdump -i eth1 host xxxx and tcp port 21000 -Ann

这个就是不写文件了,-Ann直接打印到console。

然后,我们再次去执行那个rsync命令,这次就看到了奇怪的一幕了:

  • 首先是正常的三次握手
  • 接下来,客户端在18:06:58,发起请求,请求体只能认出来:"@RSYNCD:30.0"
  • 接下来,服务端表示收到该请求
  • 再接下来,服务端过了10多s后,返回了。返回体:"@RSYNCD 30.0"

我们想想,客户端发起了请求,请求体是@RSYNCD:30.0之类的,看起来像是协商版本啥的;服务端隔了15s返回,也返回了一个版本信息(合理猜测)。

我又想起,好像之前在哪里看到资料,说rsync版本低了,有类似问题。

我就让同事去看看别的正常的服务器上的版本,是什么情况。同事看完后,表示版本无差异。

那其实就陷入僵局了,唯一的思路就是:先去看看这个rsync协议是啥样的,客户端为啥发了个这个过去,服务端要一直卡住呢。

现在,我们至少已经知道了问题的范围:应该是这个rsync服务端的反应有点问题,至于是为啥导致他反应这么慢,那就要去网上查了,看看有什么可能的原因。(我没有target服务器的ssh权限,没有想起来去服务端查看)

然后接下来,就是开始在google、百度上各种搜,关键字换来换去,最终查到了一些资料。

首先是rsync的协议,https://blog.csdn.net/hyforthy/article/details/18091869

和我抓的包的内容进行了应证,讲得还是基本准确的。

但是没有找到更多的细节,其实我是想知道官方文档有没有提到这种:什么情况下,收到客户端发的版本协商请求后,会卡住10多s。

但是很遗憾,官方文档也没讲这些。

最终,也就根据现象,调整关键字,找到了一些网上人的踩坑记录,发给同事看看。

网上的文档如下(https://blog.csdn.net/weixin_30488313/article/details/97145611):

然后转手发给了同事,让他跟着这里面去检查。

这边我的意思就是,rsync服务端,收到客户端请求后,是可以拿到客户端的ip的,某些情况下,有些软件,经常会拿着这个ip,去反查一下ip对应的hostname,因此,我就推断是这个原因。

不过当时已经是周五下班时间了,我也没有rsync服务端机器的权限,没办法排查。同事应该是又有其他问题紧急处理了。

我们就都没管了。

今天想起来这个事情,问了下同事,同事说,就是这个问题,一模一样。

解决办法,采用了简单的方式,修改了hosts文件;

  • 或者机器连接的的dns系统能解析到客户端ip也是可以解决这个问题的。
  • 再或者就是,升级rsync服务端,升级后,支持不解析客户端ip。

总结

展示了日常处理问题的一些方法,希望对大家有所帮助。

另外,扯点闲篇,深圳终于疫情好了不少了,上周还是2天出一次小区,一户只能出去一个。

由于我这边是合租,平时大家也没沟通,不知道别人用没用出去的名额,我也就懒得出去了,所以是小区里宅了一周多。再加上之前的两周居家,算起来,居家已经3周多了。。

明天终于可以去公司上班了,不想待家里了,真没多少效率,太考验自制力了。

这两天出了东航的事情,也给我提了个醒,之前看到知乎问题是,有个年轻人去世了,家里老人挨家银行去问,看看有没有儿子的钱存在该银行。

总之很麻烦。

这还是现金存款部分,要是再有个什么基金、港美股、保险、证券账户、虚拟货币等各类资产,怕是家人也不知道,真要有点啥,那个钱,就要是给国家做贡献了(问题是国家也不会去动你的账户。。这就算是dead account了)。

所以,有些钱,是不是可以直接给到家人账号呢?可以想想。

rsync同步文件到远程机器,卡住10多秒--问题解决过程的更多相关文章

  1. rsync同步文件(多台机器同步代码...)

    常用组合   rsync -av --delete-after --exclude-from="a.txt"  x/x -e ssh x:/x/x   a.txt 制定忽略的文件, ...

  2. 使用rsync同步文件

    rsync是Unix/Linux下同步文件的一个高效算法,它能同步更新两处计算机的文件与目录,并适当利用查找文件中的不同块以减少数据传输.关于rsync的核心算法,有兴趣的看下这篇文章. 这里介绍一下 ...

  3. rsync 同步文件重复拷贝问题

    rsync 是同步文件的利器,一般用于多个机器之间的文件同步与备份,同时也支持在本地的不同目录之间互相同步文件.在这种场景下,rsync 远比 cp 命令更加合适,它只会同步需要更新的文件,默认情况下 ...

  4. rsync 同步文件

    rsync 同步文件 rsync -avz roo@192.168.4.12::/home/a ./a  --exclude "data" exclude 去掉/a/data 文件 ...

  5. Windows服务器之间rsync同步文件

    两台windows7机器 server:192.168.12.104 client:192.168.12.103 目的:将server上的E盘的目录FYFR里面的内容定时同步到client上的D盘下F ...

  6. 通过 lsyncd + rsync 同步文件

    通过rsyncd实现将源服务器上的文件同步到目标服务器,通过lsyncd监控源服务器上的文件是否有变动,若有变动调用rsyncd服务对差异的文件进行同步. 0. lsyncd有三种同步文件的方式: ( ...

  7. rsync同步文件

    rsync中的参数 -r 是递归 -l 是链接文件,意思是拷贝链接文件:-p 表示保持文件原有权限:-t 保持文件原有时间:-g 保持文件原有用户组:-o 保持文件原有属主:-D 相当于块设备文件: ...

  8. Git版本控制,rsync同步文件,完成线上部署

    之前项目开发完成,测试阶段,借着此时,由于公司暂时用两台aliyun  ecs  做业务层,所以每次都需要同步线上文件,进而想着搞一搞服务器端(小公司,新项目,先小搞一把),搭建一套小的版本控制上线的 ...

  9. 【Linux】rsync同步文件 & 程序自启动

    rsync使用 1. 为什么使用rsync? rsync解决linux系统下文件同步时, 增量同步问题. 使用场景: 线上需要定时备份数据文件(视频资源), 使用rsync完成每天的增量备份. 参见: ...

随机推荐

  1. numpy 知识汇总

    1.增加维度 高纬度打印出来很不好观察,所以打印出来shape更加容易理解维度的增加, 此外一维向量a=np.array([1,2,3]), a[:,None],相当于变为二维并转置了shape=(3 ...

  2. Ubuntu20.04 PostgreSQL 14 安装配置记录

    PostgreSQL 名称来源 It was originally named POSTGRES, referring to its origins as a successor to the Ing ...

  3. 基于FMC接口的Kintex-7 XC7K325T PCIeX4 3U VPX接口卡

    一.板卡概述 标准VPX 3U板卡, 基于Xilinx公司的FPGAXC7K325T-2FFG900 芯片,pin_to_pin兼容FPGAXC7K410T-2FFG900 ,支持PCIeX8.64b ...

  4. Solution -「CF 510E」Fox And Dinner

    \(\mathcal{Description}\)   Link.   给定正整数集合 \(\{a_n\}\),求一种把这些数放置在任意多个圆环上的方案,使得每个环的大小大于 \(2\) 且环上相邻两 ...

  5. Solution -「国家集训队」「洛谷 P4451」整数的 lqp 拆分

    \(\mathcal{Description}\)   Link.   求 \[\sum_{m>0\\a_{1..m}>0\\a_1+\cdots+a_m=n}\prod_{i=1}^mf ...

  6. Dump Lsass内存转储新旧方法

      之前看到一篇关于Lsass内存dump的文章,学习记录一下.   lsass.exe(Local Security Authority Subsystem Service)进程空间中,存有着机器的 ...

  7. 「Python实用秘技06」逐行监听Python程序的内存消耗

    本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills 这是我的系列文章「Python实用秘技」的第6期 ...

  8. Vue-从入门到第三次世界大战_1

    前言:当然世界大战是大家都不希望看到的这里是代表我会一直更新下去 ,那我为什么要这么写,没错我就是标题党. 先说下Vue介绍: 官网:https://cn.vuejs.org/ 为什么用:因为是TMD ...

  9. 攻防世界--神奇的Modbus

    使用Wireshark在数据包中寻找flag flag是明文形式存储wireshark输入modbus过滤并追踪tcp流追踪tcp流 得到结果:ctf{Easy_Modbus} (虽然在wiresha ...

  10. VBS病毒实验

    实验目的 探讨VBS病毒实现原理,为更好的深入防御和查杀病毒 实验原理 VBS病毒发生机理 实验内容 编写简单VBS病毒,并实现功能,学习VBS病毒发生机理 实验环境描述 VPC1(虚拟PC) 操作系 ...