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

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

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

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

相关文章

状态模式:管理对象状态转换的动态策略

在软件开发中,状态模式是一种行为型设计模式,它允许一个对象在其内部状态改变时改变它的行为。这种模式把与特定状态相关的行为局部化,并且将不同状态的行为分散到对应的状态类中,使得状态和行为可以独立变化。本文将详细介绍状态…

ORA-00600: internal error code, arguments: [krbcbp_9]

解决方案 1、清理过期 2、control_file_record_keep_time 修改 恢复时间窗口 RMAN (Recovery Manager) 是 Oracle 数据库的备份和恢复工具。在 RMAN 中,可以使用“恢复窗口”的概念来指定数据库可以恢复到的时间点。这个时间点是基于最近的完整备份或增量备份。 …

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

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

html 引入vue Element ui 的方式

第一种&#xff1a;使用CDN的方式引入 <!--引入 element-ui 的样式&#xff0c;--> <link rel"stylesheet" href"https://unpkg.com/element-ui/lib/theme-chalk/index.css"> <!-- 必须先引入vue&#xff0c; 后使用element-ui --> <…

【单片机毕业设计8-基于stm32c8t6的RFID校园门禁系统】

【单片机毕业设计8-基于stm32c8t6的RFID校园门禁系统】 前言一、功能介绍二、硬件部分三、软件部分总结 前言 &#x1f525;这里是小殷学长&#xff0c;单片机毕业设计篇8基于stm32的RFID校园门禁系统 &#x1f9ff;创作不易&#xff0c;拒绝白嫖可私 一、功能介绍 -----------…

银行司库系统应用架构介绍

继国务院国资委印发了《关于推动中央企业加快司库体系建设进一步加强资金管理的意见》以及《关于中央企业加快建设世界一流财务管理体系的指导意见》&#xff0c;司库体系建设开始得到了更多重视。其中&#xff0c;作为改革风向标&#xff0c;央企数字化转型及司库建设对整个行…

Django Rest Framework的序列化和反序列化

DRF的序列化和反序列化 目录 DRF的序列化和反序列化Django传统序列化Django传统反序列化安装DRF序列化器serializers序列化反序列化反序列化保存instance和data CBV和APIView执行流程源码解析CBV源码分析APIView源码分析 DRF的Request解析魔法方法__getattr__ 什么是序列化&…

抽象工厂模式:深入探索面向对象设计的多样性

在软件开发中&#xff0c;正确地应用设计模式对于构建可扩展、可维护和高效的系统至关重要。抽象工厂模式作为创建型设计模式之一&#xff0c;提供了一个高层接口&#xff0c;用于创建一系列相关或依赖对象&#xff0c;而无需指定它们具体的类。本文将详细介绍抽象工厂模式的概…

数学建模-最优包衣厚度终点判别法-三(Bayes判别分析法和梯度下降算法)

&#x1f49e;&#x1f49e; 前言 hello hello~ &#xff0c;这里是viperrrrrrr~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#xff…

Linux内核之自旋锁:自旋锁初始化之spin_lock_init用法实例(四十五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

数字IC/FPGA——锁存器/触发器/寄存器

本文主要介绍以下几点&#xff1a; 什么是触发器和锁存器门电路和触发器的区别什么是电平钟控触发器电平钟控触发器触发器和锁存器的区别触发器的分类方式&#xff1a;逻辑功能、触发方式、电路结构、存储数据原理、构成触发器的基本器件寄存器利用移位寄存器实现串并转换或并…

Android Studio 使用Flutter开发第一个Web页面(进行中)

附上Flutter官方文档 1、新建Flutter项目&#xff08;需要勾选web选项&#xff09; 新建项目构成为&#xff1a; 2、配置 Flutter 使用 path 策略 官方文档 在main.dart中&#xff0c;需要导入flutter_web_plugins/url_strategy.dart包&#xff0c;并在main(){}函数中usePath…

第07-2章 TCP/IP模型

7.7 TCP/IP模型详解 7.7.1 简介 应用层的PDU>APDU&#xff08;Application PDU&#xff09; 表示层的PDU>PPDU&#xff08;Presentation PDU&#xff09; 会话层的PDU>SPDU&#xff08;Session PDU&#xff09; 7.7.2 TCP/IP协议体系 &#xff08;1&#xff09;TCP…

深度学习500问——Chapter07:生成对抗网络(GAN)(2)

文章目录 7.2 GAN的生成能力评价 7.2.1 如何客观评价GAN的生成能力 7.2.2 Inception Score 7.2.3 Mode Score 7.2.5 Wasserstein distance 7.2.6 Frchet Inception Distance (FID) 7.2.7 1-Nearest Neighbor classifier 7.2.8 其他评价方法 7.3 其他常见的生成式模型有哪些 7.…

洛谷题单 -- 图论的简单入门

B3643 图的存储 链接 : 图的存储 - 洛谷 思路 : 这一题要考察图的存储方式 , 一般可以使用邻接矩阵 或 邻接表来存储 图的结点 和1 边的信息 &#xff0c;详情请看代码 : 代码 #include<bits/stdc.h> using namespace std;const int N 1010 ; int n , m ; int …

【Python】实现导入、提交文件并显示其路径的基础GUI界面

The tkinter package (“Tk interface”) 是一个基于Tcl/Tk GUI工具标准的Python接口。集合在大多数操作系统都有Tk和tkinter 库&#xff0c;包括MacOS&#xff0c;Window还有一些Unix类的操作系统 【基础操作】 1 设置窗口 # -*- coding: utf-8 -*- from tkinter import *#创…

ASP.NET MVC企业级程序设计 (EF+MVP实现显示数据)

效果图 实现过程 1创建数据库 2创建项目文件 3创建控制器&#xff0c;右键添加&#xff0c;控制器 注意这里要写Home 创建成功 数据模型创建过程之前作品有具体过程 4创建视图&#xff0c;右键添加视图 5HomeController.cs代码 using System; using System.Collections.Gene…

【数学建模】2024认证杯C题完整思路和代码论文解析

经过不懈的努力&#xff0c;2024认证杯数学建模C题的完整论文和代码已完成&#xff0c;代码为A题全部4问的代码&#xff0c;论文包括摘要、问题重述、问题分析、模型假设、符号说明、模型的建立和求解&#xff08;问题1模型的建立与求解、问题2模型的建立与求解、问题3模型的建…

浏览器工作原理与实践--HTTP/1:HTTP性能优化

谈及浏览器中的网络&#xff0c;就避不开HTTP。我们知道HTTP是浏览器中最重要且使用最多的协议&#xff0c;是浏览器和服务器之间的通信语言&#xff0c;也是互联网的基石。而随着浏览器的发展&#xff0c;HTTP为了能适应新的形式也在持续进化&#xff0c;我认为学习HTTP的最佳…

【LAMMPS学习】八、基础知识(2.6)Lammps中的Walls墙

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语&#xff0c;以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…