免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2343 | 回复: 6
打印 上一主题 下一主题

[求助] Net::FTP 效率问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-28 10:51 |只看该作者 |倒序浏览
最近写了一个程序,使用Net::FTP包对本地文件通过ftp方式发送到远程主机上。
测试使用的是局域网,使用binary方式上传,方法为put,但是脚本上传的速度十分慢。一个1M多的文件都要上传几十秒。
如果用相同方式,使用手工ftp命令,相同的文件0.7秒左右就能传完。硬件应该没有问题。
运行perl脚本的机器为windows xp。远程主机是AIX 4.3
请问各位高手,问题出在哪里,如何解决。
感激不尽!

论坛徽章:
0
2 [报告]
发表于 2009-07-28 11:31 |只看该作者
Benchmark一下,看看几十秒的时间都花在哪了

论坛徽章:
0
3 [报告]
发表于 2009-07-28 12:07 |只看该作者
测试使用了一个文件,1M左右。
主要消耗时间的语句就是
                $ftp->put($_)
上传要花22秒,速度50k上下。
但是手工使用ftp,相同模式,0.7秒完成,速度1M以上。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2009-07-28 12:33 |只看该作者
抓包看一下有什么分别

论坛徽章:
0
5 [报告]
发表于 2009-07-28 14:05 |只看该作者
分别抓包看了一下,发现在传输是似乎协议有点不一致,这个最可疑。不知如何才能使Net::FTP的协议和普通ftp一致了。

Perl程序ftp抓包如下:
Transmission Control Protocol, Src Port: ftp (21), Dst Port: 8234 (8234), Seq: 467, Ack: 137, Len: 42

普通ftp传输抓包如下:
Transmission Control Protocol, Src Port: ftp (21), Dst Port: synapse-nhttp (8280), Seq: 212, Ack: 93, Len: 43

论坛徽章:
0
6 [报告]
发表于 2009-07-28 14:31 |只看该作者

回复 #1 hzl1984 的帖子

试下修改Net::FTP的BlockSize,默认是10KB,改大些,看是否能提高速度

论坛徽章:
0
7 [报告]
发表于 2009-07-28 14:52 |只看该作者
问题已经解决,感谢各位的关注。
问题主要出在Net::FTP包Client的默认的blocksize和timeout设置太大。
导致每次ftp回包时等待缓冲时间太久,只要把这两个值减小就可以了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP