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

news2024/11/24 16:27:19

服务器间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协议的支持。

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Boot REST API - 项目实现

Spring Boot REST API - 项目实现 书接上文 Spring Boot REST API - CRUD 操作,一些和数据库相关联的注解在 [spring] spring jpa - hibernate CRUD 主要的 layer 如下: #mermaid-svg-4XoU1vfE9GEVVJpw {font-family:"trebuchet ms",verdana…

CSS3 平面 2D 变换+CSS3 过渡

个人主页:学习前端的小z 个人专栏:HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! 文章目录 ✍一、CSS3 平面 2D 变换💎1 坐标轴💎2 transform 语法…

单细胞RNA测序(scRNA-seq)Cellranger流程入门和数据质控

单细胞RNA测序(scRNA-seq)Cellranger流程入门和数据质控 单细胞RNA测序(scRNA-seq)基础知识可查看以下文章: 单细胞RNA测序(scRNA-seq)工作流程入门 单细胞RNA测序(scRNA-seq)细胞分离与扩增 1. 单细胞RNA-seq样本数据说明 样本数据来源文章:Acquired cancer re…

春招冲刺百题计划|矩阵

Java基础复习 Java数组的声明与初始化Java ArrayListJava HashMap 第一题&#xff1a;螺旋矩阵&#xff08;多复习&#xff0c;谨记这不是子问题&#xff0c;而是走到不能再走才结束这个方向&#xff09; class Solution {public List<Integer> spiralOrder(int[][] ma…

Python 全栈系列239 使用消息队列完成分布式任务

说明 在Python - 深度学习系列32 - glm2接口部署实践提到&#xff0c;通过部署本地化大模型来完成特定的任务。 由于大模型的部署依赖显卡&#xff0c;且常规量级的任务需要大量的worker支持&#xff0c;从成本考虑&#xff0c;租用算力机是比较经济的。由于任务是属于超高计…

Harmony鸿蒙南向驱动开发-UART接口使用

功能简介 UART指异步收发传输器&#xff08;Universal Asynchronous Receiver/Transmitter&#xff09;&#xff0c;是通用串行数据总线&#xff0c;用于异步通信。该总线双向通信&#xff0c;可以实现全双工传输。 两个UART设备的连接示意图如下&#xff0c;UART与其他模块一…

浏览器工作原理与实践--同源策略:为什么XMLHttpRequest不能跨域请求资源

通过前面6个模块的介绍&#xff0c;我们已经大致知道浏览器是怎么工作的了&#xff0c;也了解这种工作方式对前端产生了什么样的影响。在这个过程中&#xff0c;我们还穿插介绍了一些浏览器安全相关的内容&#xff0c;不过都比较散&#xff0c;所以最后的5篇文章&#xff0c;我…

[Linux][进程控制][进程程序替换]详细解读

目录 1.进程创建1.fork函数初识2.fork函数返回值3.写时拷贝4.fork之后&#xff0c;父子进程代码共享5.fork常规用法6.fork调用失败的原因 2.进程终止0.进程终止时&#xff0c;操作系统做了什么&#xff1f;1.进程退出场景2.进程常见退出方法4 _exit函数(系统接口)4.exit函数(库…

数据结构DAY5--二叉树相关流程

流程有&#xff1a;创建->遍历->得到信息->销毁 创建 根据先序遍历的流程以及对叶子结点的左后驱结点和右后驱结点以#号替代的原则&#xff0c;写出一个数组&#xff0c;并建立一个结构体&#xff0c;包括数据域&#xff0c;结构体类型的左后驱结点和右后驱结点指针…

【C++核心-基础知识】内存分析和new操作符

内存分析和new操作符 一、内存分析1. 程序运行前就存在的区域1.1 代码区1.2 全局区1.3 代码演示 2. 程序运行后才存在的区域2.1 栈区2.2 堆区 二、new操作符1. 基本介绍2. 代码演示 一、内存分析 C程序在执行时&#xff0c;将内存大方向划分为4个区域&#xff1a; 代码区&…

堆排序及调整算法

调整算法 向上调整&#xff1a; 对大堆向上调整&#xff1a; adujust_up void adjust_up(int* a, int child) {int parent (child - 1) / 2;while (child > 0){if (a[child] > a[parent]){swap(a[child], a[parent]);child parent;parent (child - 1) / 2;}else//默…

有关格式输入输出的问题

对于格式输入输出问题&#xff0c;我们最好用c语言编写代码&#xff01;&#xff01;&#xff01; 成绩统计 难点&#xff1a;格式化输出 #include <cstdio> using namespace std; typedef long long ll;ll n,score,a,b;int main() {//及格>60 优秀>85 求及格率…

脱发治疗2.0时代,植发企业如何找到新发展高地?

“在春天这个万物生长的季节&#xff0c;只有头发在掉”。 脱发已成为现代人日常生活中最大的困扰之一。国家卫健委调查数据显示&#xff0c;我国脱发人口数量已超2.5亿&#xff0c;其中26-30岁人群占比达41.9%&#xff0c;占据脱发人群主流。考虑到快节奏生活的常态化&#x…

取消格式化 SSD磁盘:从格式化 SSD磁盘恢复数据

许多用户认为SSD上删除或格式化的数据就永远消失了。事实上&#xff0c;这是完全错误的。数据恢复软件能够取消格式化SSD或恢复SSD上的数据。在本文中&#xff0c;我们将向您展示一个简单的解决方案&#xff0c;可以从格式化的 SSD 中快速、完整地恢复数据。 格式化 SSD 的原因…

【保姆级讲解Element UI】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

青少年体能素质教育平台

一、项目背景与意义 随着社会的快速发展和人们生活水平的提高&#xff0c;青少年体能素质教育逐渐受到社会各界的广泛关注。体能素质作为青少年全面发展的重要组成部分&#xff0c;对于提升他们的健康水平、增强自信心、培养团队协作精神和创新能力具有重要意义。然而&#xf…

cygwin工具学习记录

文章目录 cygwin工具学习记录主要特点使用场景安装命令使用使用命令行安装命令包的基本步骤&#xff1a;安装apt-cyg&#xff1a;错误处理&#xff1a;错误一&#xff1a;错误二错误三 简单使用 cygwin工具学习记录 Cygwin是一个在Windows操作系统上提供类Unix环境的免费软件工…

tcp early retransmit 和 rack 中神奇的 1/4 minrtt

雨中跑步十公里&#xff0c;沿河看柳&#xff0c;发了一则朋友圈&#xff1a; 为什么采用 1/4 minrtt 作为重传和探测的延时&#xff0c;上图解释的已经很清楚了&#xff0c;主要还是怕乱序&#xff0c;关于乱序的度量&#xff0c;上图解释得非常清楚&#xff0c;乱序预期可在…

蓝桥2021A组E题

回路计数 问题描述格式输入格式输出评测用例规模与约定解析参考程序难度等级 问题描述 格式输入 无 格式输出 输出方案数 评测用例规模与约定 无 解析 题目的意思是21个教学楼对于编号互质的两个楼就有一个通道&#xff0c;可以想成一个图有双向边当编号互质时&#xff0c;…

path环境变量的作用

当我把一个运行文件的路径加入到了path环境变量&#xff0c;就可以在cmd命令行随时使用运行。 在path中有两个path上面的是用户的path&#xff0c;下面的是计算机的path