论坛首页 Java企业应用论坛

MINA使用心得及相关要点,有一个bug的解决方案,不知道其它朋友是否遇到过(一)

浏览 48052 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-07-20  
hipx 写道
sendUrgentData保活,不能理解,java接收端无法区分带内数据和常规数据,urgent数据也仅是理论上来说能够绕过常规数据流先接收,这样的话好像与常规发送一个-16没什么区别?


java接收端只要支持sendUrgentData的话,就一定会区分sendUrgentData所发送的紧急数据,而不是叫什么内数据,另外我们做个假设, 假设常规发送是以回车换行来代表一次数据的发送完毕,这个与紧急数据就会有很大的区别吧?紧急数据只支持一个字节的发送,它的发送机制是与OS内部的程序代码调用息息相关的,怎么能说与常规发送没有区别呢?真要是没有区别,JDK里面就不会有sendUrgentData的存在了。“urgent数据也仅是理论上来说能够绕过常规数据流先接收”这个不仅是理论上的,在常规阻塞的SOCKET应用中,大多数情况下都能使用的一个东东。并且服务端还不需要你做什么设置,其用处非常广泛的。
0 请登录后投票
   发表时间:2011-07-22  
好多,慢慢看。。你一点都懒
0 请登录后投票
   发表时间:2011-07-23  

 

这个流程图有点问题的

接收到数据时没有问题的,但发送数据时也就是session.write()时的流程有问题

过滤器链是顺序执行的 IoFilter1 -> IoFilter2 -> IoFilter3

接收到消息流程是:IoService -> IoProcessor ->   IoFilter1 -> IoFilter2 -> IoFilter3  -> IoHandler

发送消息时:Iohandler ->IoProcessor ->   IoFilter1 -> IoFilter2 -> IoFilter3  -> Ioservice

 

过滤器由IoService注册,而调用是由IoProcessor完成,数据的接受和发送都是由IoProcess执行,因此过滤器不可能倒序执行。

我跟踪过这个执行顺序得到的结论,希望大家不要受到这个图片的误导

 

 

0 请登录后投票
   发表时间:2011-08-05  
http://www.iteye.com/problems/69477
这是我最近发的问答。相关MINA的。请大家帮解答下。谢谢
0 请登录后投票
   发表时间:2011-08-19  
xnxqs 写道

文章到这里基本上算是结束了,而项目最终的并发量从 2680 提升至 3.5W, 客户要求的是 2W 的并发量,所以后面更高的并发没有继续再测,至本文截稿为止,最新的消息是项目的一期工作已经顺利通过了国家级机构的评测。但实质上本文关于 MINA 框架还有很多东西没有涉及到,比如说与 Spring 的结合,对 Jmx 的支持,自定义协议详细举例等等,但我想这点小困难应该不会妨碍大家对 mina 的学习热情吧!感兴趣的童鞋不妨把它当成一个课后作业来做做吧 !!  ^_^


可否具体讲你单台通讯机的并发量是多少?还有你这个并发量是怎么算的,是算每秒的并发量还是一个时间点上的并发?
谢谢
0 请登录后投票
   发表时间:2011-08-21  
happyblue 写道
可否具体讲你单台通讯机的并发量是多少?还有你这个并发量是怎么算的,是算每秒的并发量还是一个时间点上的并发?
谢谢


单台通讯机的并发量就是二W,这个并发量是按同一时间点来算的.因是通过软件来模拟测试,所以不可能存在实际意义上的同一时间点上的并发,但这确实是没有间断的发过2W个连接.  模拟软件一次性发完2W个链接,大致所花时间在10秒以内,而通讯机处理完所有报文,大概需要90秒左右.
0 请登录后投票
   发表时间:2011-08-21  
有没有遇到内存泄漏问题?如果有遇到那又是如何解决的?
0 请登录后投票
   发表时间:2011-08-22  
xnxqs 写道
happyblue 写道
可否具体讲你单台通讯机的并发量是多少?还有你这个并发量是怎么算的,是算每秒的并发量还是一个时间点上的并发?
谢谢


单台通讯机的并发量就是二W,这个并发量是按同一时间点来算的.因是通过软件来模拟测试,所以不可能存在实际意义上的同一时间点上的并发,但这确实是没有间断的发过2W个连接.  模拟软件一次性发完2W个链接,大致所花时间在10秒以内,而通讯机处理完所有报文,大概需要90秒左右.

不知道你的通讯机作为客户端转发报文的时候,在linux环境中高并发的时候有么有出现过open too many files的情况?每个nioSocketConnector都会打开十几个文件,而linux环境默认每个进程是1024,照这样的话,这个并发量应该是在50左右;不知道你是怎么解决这样的高并发的问题的?
0 请登录后投票
   发表时间:2011-10-10  
http://www.iteye.com/problems/72943

请帮忙看看。
0 请登录后投票
   发表时间:2011-10-18  
happyblue 写道
xnxqs 写道
happyblue 写道
可否具体讲你单台通讯机的并发量是多少?还有你这个并发量是怎么算的,是算每秒的并发量还是一个时间点上的并发?
谢谢


单台通讯机的并发量就是二W,这个并发量是按同一时间点来算的.因是通过软件来模拟测试,所以不可能存在实际意义上的同一时间点上的并发,但这确实是没有间断的发过2W个连接.  模拟软件一次性发完2W个链接,大致所花时间在10秒以内,而通讯机处理完所有报文,大概需要90秒左右.

不知道你的通讯机作为客户端转发报文的时候,在linux环境中高并发的时候有么有出现过open too many files的情况?每个nioSocketConnector都会打开十几个文件,而linux环境默认每个进程是1024,照这样的话,这个并发量应该是在50左右;不知道你是怎么解决这样的高并发的问题的?



你这个算法有问题,怎么可能只有50左右? 连接有几种状态,当他为IDLE时,几乎不占资源。还有,MINA是基于NIO架构的,就是说一个线程可能管成成千上百个连接,怎么并发量只有50呢。建议你先多看下NIO的基础文档。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics