也许有人可以回答我这个问题.在我最近的工作中,我注意到我的应用程序(通过FTP下载更新)在与

Linux一起使用时非常慢.我在Mac上开发这些东西,所以我之前没有注意到这个问题,因为Mac OS下的下载速度并不是很低.但是当转向Linux时,应用程序表现得非常不同.

FTP服务器(在Ubuntu服务器上运行的纯FTP)连接到与客户端相同的LAN,因此不考虑Internet速度问题.由于性能低下,我将Apache FTPClient更改为edtFTPj / Free.差异仍然显着但可以接受.作为测试用例,我总是下载大小约为30 MB的文件.然后我检查了ftp服务器日志以了解传输速率.

你自己看.提到的VMWare在Mac上运行.除非另有说明,否则Java是Oracle Java 1.7.

Apache Commons Net 2.3

代码看起来像这样

FTPClient ftp = new FTPClient();

ftp.connect("srv0006");

ftp.login("anonymous", "asd");

ftp.setFileType(FTP.BINARY_FILE_TYPE);

File target = new File("/tmp/pub.tar");

FileOutputStream fos = new FileOutputStream(target);

ftp.retrieveFile("/pub.tar", fos);

fos.close();

以下是ftp日志的结果

Mac OS从IntelliJ Idea开始

downloaded (30452736 bytes, 21200.67KB/sec)

Mac OS从shell开始

downloaded (30452736 bytes, 21471.75KB/sec)

Windows 7(在VMWare中)

downloaded (30452736 bytes, 65243.15KB/sec)

运行Oracle Java的OpenSuse(在VMWare中)

downloaded (30452736 bytes, 5274.56KB/sec)

运行OpenJDK的OpenSuse(在VMWare中)

downloaded (30452736 bytes, 7663.68KB/sec)

Ubuntu 12.04.1 LTS

在与千兆以太网连接的另一台PC上运行到同一LAN.其他Ubuntu机器的行为方式完全相同.我在20分钟后退出了转会.查看转移率.

downloaded (7077888 bytes, 6.10KB/sec)

edtFTP4j 2.4.0

在此之后,我转到了edtFTP4j.结果好多了.

FileTransferClient ftp = new FileTransferClient();

ftp.setRemoteHost("srv0006");

ftp.setUserName("anonymous");

ftp.setPassword("asd");

ftp.connect();

ftp.downloadFile("/tmp/pub.tar", "/pub.tar");

ftp.disconnect();

结果发生了显着变化:

Mac OS从IntelliJ Idea开始

downloaded (30452736 bytes, 109431.60KB/sec)

Mac OS从shell开始

downloaded (30452736 bytes, 110333.66KB/sec)

Windows 7(在VMWare中)

downloaded (30452736 bytes, 91318.64KB/sec)

运行Oracle Java的OpenSuse(在VMWare中)

downloaded (30452736 bytes, 89312.46KB/sec)

运行OpenJDK的OpenSuse(在VMWare中)

downloaded (30452736 bytes, 89041.05KB/sec)

Ubuntu 12.10(在VMWare中)

downloaded (30452736 bytes, 81154.99KB/sec)

Ubuntu 12.04.1 LTS在i5笔记本上运行,Wifi(50 MBit / s)

downloaded (30452736 bytes, 2883.84KB/sec)

Ubuntu 12.04.1 LTS在i5笔记本电脑,千兆以太网上运行

downloaded (30452736 bytes, 93822.44KB/sec)

Ubuntu 12.04.1 LTS

在前面提到的PC上运行(具有6.10 KB /秒tx速率的PC)

downloaded (30452736 bytes, 11633.38KB/sec)

我不明白这一点.谁有线索在这里发生什么?

再见,托斯滕……

java ftp限速_为什么Java FTP客户端的传输速率存在很大差异相关推荐

  1. java武功秘籍_请问java全套内容都有什么呢?

    我整理的Java全套内容学习路线,分为6个阶段(大阶段)第一阶段:java内功心法篇 第二阶段:Java武功秘籍(经典框架) 第三阶段:Java高级功法(主流框架) 第四阶段:Java成神之路 第五阶 ...

  2. java程序设计试题_《Java语言程序设计》期末考试模拟试题——填空题和编程题...

    一.根据题意,填写出空格中的内容 Java平台包括三个技术方向,其中J2ME代表____________.J2SE代表___________.J2EE代表____________.2.面向对象的四大概 ...

  3. java robot 对象_用Java Robot对象实现服务器屏幕远程监视

    用Java Robot对象实现服务器屏幕远程监视 作者:李鲁群 摘要: 有时候,在Java应用程序开发中,如:远程监控或远程教学,常常需要对计算机的屏幕进行截取,由于屏幕截取是比较接近操作系统的操作, ...

  4. java初学课程_作为java新手应该学习什么课程

    照目前IT行业发展趋势,学java的人越来越多,因为java的应用范围广,薪资待遇在IT行业里也是名列前茅,那么,作为java新手应该学习什么课程呢?动力节点java学院的小编来告诉大家新手应该学哪些 ...

  5. java web源代码_检测Java Web应用程序而无需修改其源代码

    java web源代码 与其他系统进行交互时,大多数Java Web应用程序都使用标准Java接口. 诸如Web页面或REST服务器之类的基于HTTP的服务是使用接口javax.servlet.Ser ...

  6. java开发错误_每个Java开发人员都必须避免的9个安全错误

    java开发错误 Checkmarx CxSAST是功能强大的源代码分析(SCA)解决方案,旨在从根本上识别,跟踪和修复技术和逻辑安全漏洞:源代码. 在这里查看 ! 自从1995年中期引入Java以来 ...

  7. java queue使用_使用Java使用Amazon Simple Queue Service

    java queue使用 Amazon Simple Queue Service或SQS是Amazon Webservice堆栈提供的高度可扩展的托管消息队列. Amazon SQS可用于完全解耦系统 ...

  8. java web服务_将Java服务公开为Web服务

    java web服务 本教程解决了开发人员面临的最实际的情况. 大多数时候,我们可能需要将某些现有服务公开为Web服务. 在项目生命周期的不同阶段可能会遇到这种情况. 如果这是初始阶段,那么您几乎是安 ...

  9. java正则表达式 匹配()_学习Java正则表达式(匹配、替换、查找)

    import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; public c ...

最新文章

  1. PHP学习资源收集~
  2. #161: 给定n*n由0和1组成的矩阵,如果矩阵的每一行和每一列的1的数量都是偶数,则认为符合条件。 你的任务就是检测矩阵是否符合条件...
  3. 使用ANY和ALL条件
  4. 【ubuntu】解决窗口管理器 不支持透明问题(11.04之前版本不支持)
  5. Redis常用配置参数详解及查看修改命令
  6. Breadth-first Search(广度优先搜索)专题2
  7. c语言删除文件remove_Python中的文件和目录操作
  8. 物联卡与sim卡有什么差别性的不同
  9. Hicharts实现世界地图思路及踩过的坑(含中文GeoJSON数据集及详细代码)
  10. 蓝牙CC2540 CC2541常用AT指令集
  11. sipp uas 脚本
  12. Python Counter函数
  13. centos 6.9部署svn服务器和客户端(客户端含windows、linux版本)
  14. 阿里云盘小白羊版!你值得拥有的一款第三方阿里云盘客户端
  15. java怎么连发子弹_HTML-坦克大战-完成子弹连发功能(三)
  16. 怎样进行两台电脑之间的数据传输?
  17. win11快速启动有必要关闭吗?如何关闭?
  18. mybais-plus出现Invalid bound statement (not found)的解决方案
  19. cuug内部oracle视频教程-oracle sql_tune
  20. 论文分区和影响因子 IF 查询

热门文章

  1. 如何处理SAP Launchpad上tile打不开的问题
  2. 如何将windows10的显示字体调大
  3. SAP S/4HANA的扩展字段的渲染逻辑
  4. SAP CRM Business Partner API的buffer工作原理
  5. 【数据库】pymysql数据库事务操作
  6. php session支持,SESSION支持
  7. 网页版nfc_苹果5大系统升级新特性浓缩汇总!秋季5G版iPhone稳了
  8. vue Mutation 必须是同步函数 为什么_Vue 开发必须知道的 36 个技巧「近1W字」
  9. 微软服务器问题,微软服务器内存溢出问题 | 【韩涛博客】
  10. python学习-知识点进阶使用(end、while else、range、iter、list的多种遍历方式)