我用mina做服务器和客户端分别在linux和windows下做了测试,发现在windows下的性能明显高于linux,不知道问题出在哪了,代码如下,望高手能够指教一下:
server端:接受消息然后直接转发回客户端
IoAcceptor acceptor=new NioSocketAcceptor();
//acceptor.getFilterChain().addLast("logger ", new LoggingFilter());
acceptor.getFilterChain().addLast("codec", new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8"))));
acceptor.getFilterChain().addLast("threadPool", new ExecutorFilter(new OrderedThreadPoolExecutor(10)));
acceptor.setHandler(new MinaServerHandler());
acceptor.bind(new InetSocketAddress(PORT));
acceptor.getSessionConfig().setBothIdleTime(30);
client端:循环发送100字节数据到服务器,接收服务器发回的数据并统计时间
IoConnector connector = new NioSocketConnector();
connector.setHandler(new MinaClientHandler());
connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8"))));
connector.getSessionConfig().setBothIdleTime(30);
ConnectFuture future = connector.connect(new InetSocketAddress(ip, port));
future.awaitUninterruptibly();
boolean connected=future.isConnected();
if(connected){
System.out.println("Connected the Server:"+ip+" on port:" + port);
// future.cancel();
// connector.dispose(true);
int count=0;
future.awaitUninterruptibly();
IoSession session = future.getSession();
while(count < 20000){
session.write(System.currentTimeMillis()+":" + Arrays.toString(new byte[100]));
Thread.sleep(time);
count++;
}
}
在windows7 32位 jdk1.6 双核 4G内存 下测试结果
消息数 count = 1000 所花费时间 time=756
消息数 count = 6000 所花费时间 time=2768
消息数 count = 10000 所花费时间 time=4187
消息数 count = 12000 所花费时间 time=4971
消息数 count = 15000 所花费时间 time=6082
消息数 count = 20000 所花费时间 time=7814
在linux Centos6.0 64位 jdk1.6 8核 16G内存 测试结果
消息数 count = 1000 所花费时间 time=1937
消息数 count = 6000 所花费时间 time=11684
消息数 count = 10000 所花费时间 time=19719
消息数 count = 12000 所花费时间 time=23702
消息数 count = 15000 所花费时间 time=29896
消息数 count = 20000 所花费时间 time=40829
这个结果明显不合理,哪位高手知道原因的请告知一下,感激不尽!!!
问题补充:gaosj 写道
Thread.sleep(time);
的关系吧,linux和windows下的时延可能会有不同,你自己测试一下看看!我也不确定
不是这个原因 查了下是tcp协议在linux上的TcpNoDelay存在问题 暂时解决了
相关推荐
7. **跨平台兼容**:由于是用Java编写的,MINA可以运行在任何支持Java的平台上,包括Windows、Linux、Mac OS X等。 8. **社区支持**:MINA有活跃的社区和用户群,提供了大量的示例、文档和教程,帮助开发者解决问题...
9. **多平台支持**:考虑到Mina服务器可能部署在不同的操作系统上,调试工具通常会提供跨平台支持,确保在Windows(如myClient.exe)、Linux和Mac OS等平台上都能正常运行。 10. **用户友好界面**:提供直观的图形...
- 由于Java的跨平台特性,Mina可以在多种操作系统上运行,如Windows、Linux、Mac OS等。 5. **高性能**: - NIO的非阻塞特性使得Mina可以处理大量并发连接,适合高负载的网络服务。 6. **可扩展性**: - Mina的...
10. **跨平台性**:作为Java项目,Apache MINA可以在任何支持Java的平台上运行,包括Windows、Linux、Mac OS等。 总结来说,Apache MINA 2.0.8是一个强大且灵活的网络应用开发框架,适用于构建高并发、高性能的网络...
6. **多平台支持**:MINA是跨平台的,可以在不同的操作系统和Java虚拟机上运行,包括Windows、Linux、Mac OS等。 7. **性能优化**:MINA使用了Java NIO,可以处理大量的并发连接。NIO的非阻塞特性使得MINA在高负载...
7. **mina-transport-apr-2.0.7.jar**:MINA的 APR(Apache Portable Runtime)传输层,利用操作系统底层的网络库,如Linux的libevent或Windows的WS2_32,提供高性能的网络I/O。 8. **mina-integration-jmx-2.0.7....
可以在任何支持Java的环境中运行,如Windows、Linux、Mac OS等。 7. **丰富的示例** MINA项目提供了许多示例代码,涵盖了从基础的Echo服务到复杂的FTP服务器的实现,有助于开发者快速理解和上手。 8. **社区支持*...
5. **跨平台**:作为Java项目,MINA天生具有跨平台特性,可以在任何支持Java的环境中运行,包括Windows、Linux、Mac OS等。 6. **丰富的文档和支持**:MINA社区提供了详尽的文档和丰富的示例代码,方便初学者入门。...
2. **平台无关性**:由于MINA是用Java编写的,所以它可以跨平台运行,无论是在Windows、Linux还是其他支持Java的系统上。 3. **多协议支持**:MINA提供了一种统一的API,可以方便地处理多种网络协议,如TCP/IP、UDP/...
4. **跨平台**:由于是基于Java开发,Apache Mina可以在任何Java运行环境中使用,支持Windows、Linux、Mac OS等操作系统。 5. **高度可扩展**:Mina的设计使得添加新的协议或网络服务变得容易,只需添加新的过滤器...
7. **跨平台性**:由于基于Java开发,Apache Mina Server 2.0可以在任何支持Java的平台上运行,包括Windows、Linux、Mac OS等,具备良好的跨平台兼容性。 8. **可配置性**:Mina允许开发者通过XML配置文件或者代码...
在Java NIO编程中,通常只使用一个Selector,但在Mina中,IoService和IoProcessor各自拥有独立的Selector,这样的设计更有利于提高并发性能。 ```java IoAcceptor acceptor = new NioSocketAcceptor(); acceptor....
7. **跨平台**:作为Java项目,Apache Mina可以在任何支持Java的平台上运行,包括Windows、Linux、Mac OS等。 通过阅读“Apache Mina Server 2.0中文参考手册V1.0.pdf”,你可以深入了解Mina的架构设计、配置方式、...
由于Mina是基于Java的,所以它具有跨平台的优势,可以在多种操作系统上运行,包括Windows、Linux、Mac OS等。 **9. 故障恢复与连接管理** Mina提供了连接超时、异常处理和重连策略等功能,帮助开发者处理网络故障...
8. **跨平台兼容**:作为Java库,MINA 可以在任何支持Java的平台上运行,包括Windows、Linux、Mac OS X等。 在"Mian-2.0.3"这个版本中,可能会包含以下改进和更新: - **性能优化**:新版本可能针对前一版本的性能...
3. **跨平台**:MINA是用Java编写的,因此可以在任何支持Java的平台上运行,包括Windows、Linux、Mac OS等。 4. **协议支持**:MINA提供对多种网络协议的支持,如TCP、UDP、SSL/TLS等,方便开发各种网络应用。 5. ...
FtpServer可以作为Windows服务或Unix / Linux守护程序独立运行, 也可以嵌入Java应用程序中。我们还提供对Spring应用程序内集成的支持, 并以OSGi捆绑软件的形式提供我们的发行版。默认的网络支持基于高性能异步IO...
在某些情况下,如果你需要自定义ping包或者有特殊需求,可以使用Mina来创建ping包并发送。Mina库提供了对套接字操作的封装,可以方便地构建网络应用。不过,对于简单的ping功能,直接调用操作系统命令可能更为简便。...
Apache SSHD项目基于Java实现,这意味着它可以在任何支持Java的平台上运行,包括但不限于Linux、Windows、Mac OS等。SSHD提供了丰富的功能,包括: 1. 支持多种身份验证机制:除了基础的密码认证,还支持公钥认证、...
9. **消息传输优化**:支持TCP/IP协议,同时还有NIO(非阻塞I/O)和MINA(Multi-purpose Infrastructure for Network Applications)框架,以提高网络性能。 在安装"apache-activemq-5.7.0-bin"压缩包时,通常包括...