求救:mina 开发客户端发送数据慢
有一个项目要做文件传输,客户端发给转发服务器,由转发服务器转发给文件服务器,把三个程序部署在一台机器上测试,速度正常能达到3~4M/s,但是把服务器和客户端分开部署到两台或者三台机器上数据就传的很慢,一开始以为是转发服务器的性能问题,后来,改成直接发送到文件服务器,不经过转发服务器,部署到两台机器上同样速度很慢,但是从服务器发送数据到客户端(下载)的速度几乎没变,从客户端发送到服务器(上传)速度就变得很慢,请问有没有人碰到类似的问题,求救啊,被这个问题折磨了好久了。。崩溃边缘啊。。。
(PS:客户端和服务器都是采用mina框架开发的,文件传输的命令控制用一个控制端口监听连接,数据传输用一个数据端口监听连接,类似ftp的21 和 20 端口)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
引用来自“浪客Dandy”的答案
你如果怀疑是网络问题 可以把两台机器直连 然后多测试几次试试看
Mina也分同步和异步,而且NIO本来就是很复杂的东西 出什么问题都有可能
引用来自“闫锋”的答案
引用来自“闫锋”的答案
这个问题怀疑跟网络有关系,与Mina没啥关系。你可以做一个简单的测试:
【Server A】部署【客户端】,【Server B】部署【服务端】,测试一下上传和下载的性能
按你所描述的,这时候应该是上传慢,下载快。然后调换一下部署方式,再试试看
【Server A】部署【服务端】,【Server B】部署【客户端】,测试一下上传和下载的性能
按我猜测的,这时候应该是上传快,下载慢。如果我猜对了,那么估计你的网络有问题。
其实并不是NIO不适合做大文件传输。大家都认为NIO效率高,但是问题是NIO太复杂,你的代码未必能利用到非阻塞带来的好处。我前段时间用Netty实现了HTTP Server,专门用于流媒体视频文件传输。后来发现实现完整的Http 1.1远比我想的复杂,Netty的作者跟我说不要这么做,去找中间件。我就换成用Apache HTTP Core。我专门测试了我的代码,Netty 阻塞/非阻塞 模式, Apache HTTP Core 以及 Sun Http Server的效率基本上是一致的。
mina 用的NIO,本来就不适合大文件传输,大文件还是用BIO的好
你如果怀疑是网络问题 可以把两台机器直连 然后多测试几次试试看
Mina也分同步和异步,而且NIO本来就是很复杂的东西 出什么问题都有可能
引用来自“闫锋”的答案
这个问题怀疑跟网络有关系,与Mina没啥关系。你可以做一个简单的测试:
【Server A】部署【客户端】,【Server B】部署【服务端】,测试一下上传和下载的性能
按你所描述的,这时候应该是上传慢,下载快。然后调换一下部署方式,再试试看
【Server A】部署【服务端】,【Server B】部署【客户端】,测试一下上传和下载的性能
按我猜测的,这时候应该是上传快,下载慢。如果我猜对了,那么估计你的网络有问题。
谢谢您的回答和帮助,我把服务器换到其他机器上有的就没问题,我不太明白,到底是mina的问题还是网络的问题,因为都在同一个局域网里,所以不太可能是局域网的问题才对啊?
这个问题怀疑跟网络有关系,与Mina没啥关系。你可以做一个简单的测试:
【Server A】部署【客户端】,【Server B】部署【服务端】,测试一下上传和下载的性能
按你所描述的,这时候应该是上传慢,下载快。然后调换一下部署方式,再试试看
【Server A】部署【服务端】,【Server B】部署【客户端】,测试一下上传和下载的性能
按我猜测的,这时候应该是上传快,下载慢。如果我猜对了,那么估计你的网络有问题。