【网络】服务器间FTP传输文件被限速问题的排查(未达最优解)

服务器间FTP传输文件被限速问题的排查

  • 问题描述
    • 具体问题
    • 软硬件环境
    • 文件传输方式的2种策略
    • FTP相关信息
    • 问题表现
    • 问题解决
    • 结论
  • 发散探讨——基于此问题进行发散研究相关知识
    • 从FileZilla软件入手
    • 从Windows入手
    • 从Linux入手
    • 从协议入手
      • Windows和Linux的文件共享,分别是使用什么协议?

问题描述

具体问题

Linux使用FTP下载Windows上的文件,FTP传输被明显限速。

软硬件环境

  1. 两台服务器之间需要大文件传输(对比以往的业务,我们将5GB以上的文件称为大文件)。
  2. 服务端为Windows 7操作系统,客户端为银河麒麟v10(视作Linux操作系统)。
  3. 万兆网口和千兆网口。

文件传输方式的2种策略

  1. FTP服务客户端连接传输。
  2. Windows开放一个共享路径由Linux挂载(mount命令)后直接拷贝。

FTP相关信息

在Windows服务器上,FTP服务使用FileZilla Server作为FTP服务。
在麒麟服务器上,用于FTP连接客户端有2个方案:FileZilla提供的图形化客户端、博主自己使用Java开发的客户端。

问题表现

  1. 在麒麟服务器上挂载了一个Windows服务器共享的远程位置,需要使用直接拷贝到指定位置,此时在Windows服务器的任务管理器测得的带宽利用率可达99.6%,5GB文件传输,10秒以内完成。
  2. 麒麟服务器使用FileZilla客户端连接Windows服务器的FileZillaServer,传输文件,带宽利用率仅有30%,5GB文件传输多次测得时间,平均值为30秒。
  3. 麒麟服务器使用Java自研的FTP客户端连接Windows服务器的FileZillaServer,传输文件,带宽利用率有所改善,最快可达60%,5GB文件传输多次测得时间,平均值为15秒。
    下图为某一次测试的带宽占用率对比图:
    在这里插入图片描述

问题解决

  1. FileZilla客户端不满足性能指标,不使用此方案。
  2. Java自研的FTP客户端虽然没有达到挂载那么高的速度,但满足性能指标,在更换多台服务器测试、优化稳定后,最终采用此方案。

结论

可能是操作系统对于FileZilla软件进行了特殊限制,也可能是FileZilla客户端底层的某些操作导致了操作系统的这种限制存在。

发散探讨——基于此问题进行发散研究相关知识

这个问题虽然解决了,但仅是业务意义上的解决,而不是技术上的解决。若本着效率至上的“技术服务于业务”原则,确实不该继续深究,但站在个人兴趣角度,这个问题值得继续扩展探讨下去。

从FileZilla软件入手

基于软件问题入手排查,博主找到这篇文章:Ftp传输在win10下被系统限速的问题分析和解决。
文中提及,Windows可能对FileZilla软件做出特殊优化性质的限制,实验中使用先传输小文件,再传输大文件的方式,“骗”过了操作系统,进而得以不被限制。这种方法是不可取的,不具有普适性,文中也说到此方法的弊端,所以不采用此方法。而后,文中提到了将FileZilla客户端的连接模式改为主动模式,会有改变,博主多次测试后,发现FTP传输带宽利用率确实有5%的提高。但仍然是和挂载方式速度相去甚远。

从Windows入手

在网络中找到的相关文章——Win10 环境FileZilla client客户端出现兼容性限速问题的解决。
文中表示在FTP传输文件确实是被限速了,需要对Qos参数进行优化,即在Windows上运行以下命令:
netsh int tcp set global autotuninglevel=restrictednetsh interface tcp set heuristics disabled
即对接收窗口自动调节级别做出更改,但我在尝试后并未解决。(博主试过将FileZilla客户端设置为主动模式的同时,也执行这两个命令,再进行多次测试,结果仍然是没有提升)
在继续查询资料的时候,在微软社区发现如下提问:为什么win10/11会对smb和ftp的局域网分享传输速度限制?(这个提问和回答均值得一看,提问者是有水平的)
在这里插入图片描述
虽然我的问题来自于Windows 7,但考虑其他可能性,我还是阅读了这篇“提问者和回答者的交锋”。
此回答中,也尝试过我们上面的接收窗口自动调节级别命令的方式来优化问题,甚至重新安装了操作系统,但可惜最后问题未能解决。

从Linux入手

接下来博主准备从Linux系统的方向上寻求解决方案,便找到这篇文章:掌握Linux TCP 窗口设置,提高网络传输效率 (linux tcp 窗口设置)。文中提及的对TCP窗口大小进行修改,我新增了如下net.ipv4.tcp_window_scaling=1net.ipv4.tcp_moderate_rcvbuf=1配置后,FTP传输带宽利用率有约5%的提升,但后续无论如何调试修改参数,均无法改变带宽利用率,甚至有所降低。

既然问题无法通过配置的方式解决,那么就需要考虑到协议层面的规则。

从协议入手

Windows和Linux的文件共享,分别是使用什么协议?

这个问题其实应该是“Windows的共享文件夹、Linux的挂载远程网络位置,分别使用的是什么协议?

Windows操作系统上,共享文件夹通常使用的是SMB (Server Message
Block)协议。SMB是一种广泛应用的网络文件共享协议,尤其在Windows环境中,它允许网络上的客户端访问服务器提供的文件系统资源,如文件、目录、打印机等。现代版本的Windows系统默认使用的是SMBv2或更高版本。

Linux操作系统上,挂载远程网络位置(尤其是来自其他Linux服务器或NAS设备)最常使用的协议是NFS(Network File
System)。NFS是一种专门设计用于跨网络共享文件系统的标准协议,它允许一个系统通过网络像访问本地文件一样透明地访问远程服务器上的文件。NFS在Linux和其他类UNIX系统中广泛支持。

但我们的问题中,即使用了Windows,也使用了Linux。那么此时问题就变成了“如果Linux上挂载的网络位置是Windows上的共享文件夹,那么此时使用的什么协议?

答案是:SMB协议。因为Linux虽然有自己的NFS协议进行文件共享,但若对方是来自Windows的共享,Linux需要借助SMB客户端软件来与Windows系统进行通信。

在Linux中,通常会使用名为“cifs-utils”的软件包来提供对SMB协议的支持。

至此,由于时间限制,未能达到最优的解决方案。不过发散的学习到了很多其他知识,希望本文的观点和搜索的资料,可以提供一些解决问题的思路,以便诸位在解决相似问题的时候可以得到启发。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/539578.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

重看Spring聚焦ApplicationContext分析

目录 一、理解下ApplicationContext的设计 (一)功能性的理解 (二)ApplicationContext 结构类图 二、ApplicationContext根接口 (一)源码展示 (二)分析说明 三、子接口Configu…

IPSec简介

起源 随着Internet的发展,越来越多的企业直接通过Internet进行互联,但由于IP协议未考虑安全性,而且Internet上有大量的不可靠用户和网络设备,所以用户业务数据要穿越这些未知网络,根本无法保证数据的安全性&#xff0…

00_如何使用国内镜像源下载QT

如何使用国内镜像源下载QT 如何使用国内镜像源下载QT 如何使用国内镜像源下载QT 第一步:下载下载qt online installer 网站:https://download.qt.io/official_releases/online_installers/ 添加链接描述 下载windows版本 第二步: 剪切放…

竞赛 地铁大数据客流分析系统 设计与实现

文章目录 1 前言1.1 实现目的 2 数据集2.2 数据集概况2.3 数据字段 3 实现效果3.1 地铁数据整体概况3.2 平均指标3.3 地铁2018年9月开通运营的线路3.4 客流量相关统计3.4.1 线路客流量排行3.4.2 站点客流量排行3.4.3 入站客流排行3.4.4 整体客流随时间变化趋势3.4.5 不同线路客…

Unity Standalone File Browser,Unity打开文件选择器

Unity Standalone File Browser,Unity打开文件选择器 下载地址:GitHub链接: https://github.com/gkngkc/UnityStandaloneFileBrowser简单的示例代码 using SFB; using System; using System.IO; using UnityEngine; using UnityEngine.UI;…

若依vue中关于字典的使用

文章目录 字典管理页面列表点击某个字典类型展示具体字典数据修改某一条字典数据 字典的应用一般用于select多选框中代码实现根据字典Dict的value获取Label,类似于通过key获得value 源码解析 字典管理页面 列表 点击某个字典类型展示具体字典数据 修改某一条字典数…

【InternLM 实战营第二期-笔记1】书生浦语大模型开源体系详细介绍InternLM2技术报告解读(附相关论文)

书生浦语是上海人工智能实验室和商汤科技联合研发的一款大模型,很高兴能参与本次第二期训练营,我也将会通过笔记博客的方式记录学习的过程与遇到的问题,并为代码添加注释,希望可以帮助到你们。 记得点赞哟(๑ゝω╹๑) 书生浦语大模型开源体系…

机器学习—数据集(二)

1可用数据集 公司内部 eg:百度 数据接口 花钱 数据集 学习阶段可用的数据集: sklearn:数据量小,方便学习kaggle:80万科学数据,真实数据,数据量大UCI:收录了360个数据集,覆盖科学、生活、经济等…

springboot的logback.xml默认配置文件

logback.xml <?xml version"1.0" encoding"UTF-8"?> <configuration><!-- 控制台输出 --><appender name"STDOUT" class"ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{HH:mm:s…

BI数据分析软件:行业趋势与功能特点剖析

随着数据量的爆炸性增长&#xff0c;企业对于数据的需求也日益迫切。BI数据分析软件作为帮助企业实现数据驱动决策的关键工具&#xff0c;在当前的商业环境中扮演着不可或缺的角色。本文将从行业趋势、功能特点以及适用场景等方面&#xff0c;深入剖析BI数据分析软件&#xff0…

JavaScript内置对象

目录 前言: 1.什么是对象: 1.1面向对象是干什么的&#xff1f; 1.1.1封装&#xff1a; 1.1.2继承&#xff1a; 1.1.3多态&#xff1a; 1.2面向过程与面向对象: 1.2.1面向过程&#xff1a; 1.2.2面向对象&#xff1a; 1.3JavaScript中的对象 1.4内置对象&#xff1a; …

文件名乱码危机:数据恢复全攻略

在数字化时代的浪潮中&#xff0c;电脑文件成为我们日常生活和工作中不可或缺的一部分。然而&#xff0c;有时我们会突然遭遇一个令人头疼的问题&#xff1a;原本清晰易读的文件名突然变成了乱码。这些乱码文件名不仅让我们无法准确识别文件内容&#xff0c;更可能意味着数据丢…

深耕国际舞台丨拓数派受邀参与美国 Postgres Conference 2024

在北美地区备受瞩目 Postgres Conference 2024 大会将于4月17日在美国 San Jose 希尔顿举行。拓数派作为立足中国的高科技创新企业&#xff0c;也同时致力于国际开源技术和生态的深耕。本次美国 Postgres Conference 2024 大会中&#xff0c;拓数派将作为黄金赞助商&#xff0c…

lv_micropython for ESP32-C3

一、开发平台说明 硬件&#xff1a;立创实战派ESP32-C3开发板。处理器ESP32-C3&#xff08;内置400KB SRAM&#xff09;&#xff0c;无内置FLASH&#xff0c;2.0寸液晶&#xff08;液晶驱动IC:ST7789&#xff0c;触屏驱动IC:FT6336&#xff09;&#xff0c;下载口UART0。 ESP…

采集某新闻网资讯网站保存PDF

网址&#xff1a;融资总额近3亿美元、药明康德押注&#xff0c;这家抗衰老明星公司有何过人之处-36氪 想要抓取文章内容&#xff0c;但是找不到啊&#xff0c;可能是文字格式的问题&#xff0c;也可能文章内容进行了加密。 在元素中查看&#xff0c;window.initialState返回的就…

python实战-含容器运用

目录 1.找出10000以内能被5或6整除&#xff0c;但不能被两者同时整除的数 2.写一个方法&#xff0c;计算列表所有偶数下标元素的和(注意返回值) 3.根据完整的路径从路径中分离文件路径、文件名及扩展名 4.根据标点符号对字符串进行分行 5.去掉字符串数组中每个字符串的空格…

CentOS 网卡ifcfg-eth0 ping不通外网(www.baidu.com)

1、如果确认好就直接激活网卡&#xff01; ifup eth0 2、慢慢找&#xff1a; cd /etc/sysconfig/network-scripts/ ls 找到你的网卡是啥&#xff0c;这里网卡是 ifcfg-eth0 执行1就好了&#xff01;

[蓝桥杯] 岛屿个数(C语言)

提示&#xff1a; 橙色字体为需要注意部分&#xff0c;红色字体为难点部分&#xff0c;会在文章“重难点解答”部分精讲。 题目链接 蓝桥杯2023年第十四届省赛真题-岛屿个数 - C语言网 题目理解 这道题让我们求岛屿个数&#xff0c;那么我们就应该先弄懂&#xff0c;对于一…

使用Docker定时备份数据

文章目录 一、Docker镜像制作二、MySQL数据备份三、Minio数据备份四、数据跨服务器传输五、Nginx日志分割六、Docker启动七、Docker备份日志 一、Docker镜像制作 镜像制作目录 mc下载地址 - rsyncd.conf # https://download.samba.org/pub/rsync/rsyncd.conf.5port 873 uid …

pytorch-多分类实战之手写数字识别

目录 1. 网络设计2. 代码实现2.1 网络代码2.2 train 3. 完整代码 1. 网络设计 输入是手写数字图片28x28&#xff0c;输出是10个分类0~9&#xff0c;有两个隐藏层&#xff0c;如下图所示&#xff1a; 2. 代码实现 2.1 网络代码 第一层将784降维到200&#xff0c;第二次使用…