在mina2中,如果在代码中使用了dfcb.addLast("executor", new ExecutorFilter(Executors.newCachedThreadPool()));拦截器,并且开了很多的客户端测试,发现后台的pool-3-thread线程会很多,有时候这个线程过多会出现内存溢出了说不能创建新的线程,最后会把客户端关闭了一部分或者自己停了;如果不加这个拦截器发现后天的NioProcessor会随着时间的增加阻塞总数也不断变大,不知道最后会不会回崩掉?mina2的线程到底该如何设置啊,网上也看了很多资料也了解了上面两种方式配与不配的区别。说一下我的业务:1、接收客户端数据,2、解析数据3、数据入库
2条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
scriptguy 2014-04-29 09:10最佳回答 专家已采纳回答一下问题:
如果不加这个拦截器发现后天的NioProcessor会随着时间的增加阻塞总数也不断变大,不知道最后会不会回崩掉?不加拦截器的话,接收客户端数据与业务处理均在IoProcessor引用的线程池里处理,可能会产生阻塞,客户端延迟严重,最终会导致工作队列不断累积,内存不断增长
解决办法:
通用的做法是修改dfcb.addLast("executor", new ExecutorFilter(Executors.newCachedThreadPool()));
将cachedThreadPool修改为有上限的线程池,防止线程无限增长。
采纳该答案 已采纳该答案 专家已采纳评论解决 无用打赏举报微信扫一扫
分享评论登录 后可回复...
查看更多回答(1条)
报告相同问题?
提交
相关推荐 更多相似问题
- 2014-04-29 08:51回答 2 已采纳 回答一下问题: 如果不加这个拦截器发现后天的NioProcessor会随着时间的增加阻塞总数也不断变大,不知道最后会不会回崩掉? 不加拦截器的话,接收客户端数据与业务处理均在IoProcess
- 2015-01-08 08:30回答 3 已采纳 数据库可以共享同一个连接,然后你写入数据库,由数据库自己来做数据并发处理
- 2016-04-01 07:28回答 1 已采纳 心跳包内容是固定的啊。在解码完成后,可以判断出来了。 我记得可以添加心跳类,里面有判断吧。 ``` KeepAliveMessageFactory heartBeatFactory = n
- 2021-03-16 17:08学长说公考的博客 测试方法采用 mina 和 netty 各实现一个 基于 nio 的EchoServer,测试在不同大小网络报文下的性能表现测试环境客户端-服务端:model name: Intel(R) Core(TM) i5-2320 CPU @ 3.00GHzcache size: 6144 KBcpu cores:4...
- 2020-08-30 20:48邵邵邵的博客 后来才知道,Mina之所以能实现异步通信,是因为Mina是多线程的网络通信框架,Mina把这些线程封装起来,这样调用的时候就不会发生阻塞了! // IoAcceptor acceptor = new NioSocketAcceptor(); 言归正传,今天用Mina...
- 2020-04-24 13:00greekw的博客 或许我们可能会有这样的疑问,假设存在多个线程执行CAS操作并且CAS的步骤很多,有没有可能在判断V和E相同后,正要赋值时,切换了线程,更改了值。造成了数据不一致呢?答案是否定的,因为CAS是一种系统原语,原语...
- 2011-07-08 14:04回答 3 已采纳 长连接就是只要客户端程序不退出,连接不出异常,你就一直用同一个连接发送数据,不要每次发送都去创建新的连接。 如果用短连接的话,通常客户端都会有一个连接池用于复用这些连接。例如JDK的HTTP支持
- 2012-04-11 11:39回答 1 已采纳 Runnable不能直接调用run(),应该调用start()
- 2015-02-03 07:43回答 3 已采纳 做过类似的功能,正准备整合成框架发布到Github一直没时间。 思路对的,推荐建立连接的方法放在service中,然后如何和服务端保持连接是个很重要的问题,因为移动端是会进入休眠状态的,需要定时唤醒
- 2010-02-10 17:28ftj20003的博客 在mina中大量的使用这一技术,除了Executors的工厂方法构建线程池之外,它还继承自ThreadPoolExecutor提供自己的线程池的实现OrderedThreadPoolExecutor和UnorderedThreadPoolExecutor。这两者主要应用于...
- 2013-11-07 10:24hxwhou的博客 其实在mina的源码中,IoService可以总结成五部分service责任、Processor线程处理、handler处理器、接收器和连接器,分别对应着IoService、IoProcessor、IoHandler、IoAcceptor和IoConnector。在代码的中有如下包跟...
- 2020-02-05 13:39oPeiJie1的博客 2)需要具备其他的额外技能做铺垫:例如熟悉 Java 多线程编程,因为 NIO 编程涉及到 Reactor 模式,你必须对多线程和网路编程非常熟悉,才能编写出高质量的 NIO 程序。 3)可靠性能力补齐,开发工作量和难度都非常...
- 2014-03-11 15:45回答 3 已采纳 mina是nio框架。 nio框架是用的select 模型,通过在少量线程中 轮换处理当前有数据事件的链接 来节省数据资源。 因此每次接收到数据后的处理时间不能长,否则会整体性能会很快下降。
- 2012-04-24 17:57回答 5 已采纳 看一下mina自带的文档吧,有编码器解码器的例子,例如上面那个TextLineCodecFactory的源代码
- 2016-06-11 14:40回答 4 已采纳 Mina中使用slf4j做日志框架,slf4j只是框架,没有具体实现.因此Mina引入slf4j 实现包.但Android中有实现包了,就会起冲突. 解决方案: Android
- 宋顺宁.Seany的博客 2.HashMap的源码,实现原理,底层结构。3.反射中,Class.forName和classloader的区别4.session和cookie的区别和联系,session的生命周期,多个服务部署时session管理。5.Java中的队列都有哪些,有什么区别。6.Java的...
- 2008-09-05 23:53iteye_20112的博客 最新在使用MINA作了UDP服务器和UDP客户端,在最后性能测试时,总是遇到OutOfMemory的问题,很是郁闷,定位了三天,后来终于找到了解决方法。和大家分享一下,以免大家再走同样的弯路。 我们性能测试场景如下: ...
- 2014-09-29 16:23lyliuyangyang的博客 最近阅读了mina的源代码,这里给大家做个分享: ... 2.filterchain和processor处理模型 二、mina server核心组件剖析 1.acceptor: 首先附上一张acceptor的uml图,方面大家了阅读源码时了解到我们讲到...
- 2012-03-25 08:19回答 2 已采纳 我在Win7平台下是可以直接执行的,你在非Android的平台运行下试试?
- 2013-01-11 21:58aaaasdfdsg的博客 依然遵循之前的原则,只看core(其实还包括了transport,虽然它不在core中,但socket相关的类在此包中),了解mina的内部机制,忽略细节,这里就直接从服务器的入口第一步开始,即连接管理的IOService。直接来看下...
- 没有解决我的问题, 去提问