最近用flash + java做一个实时应用,
服务器端用mina2.0.4作为通讯框架,
封装了自己的消息格式,采用byte流的方式进行交互,
在测试过程中,并发量50以下正常运行,
在超过100时,服务器无法正常发送消息,问题描述如下:
以调试模式启动服务器,
此时停止所有客户端,
1,重新连接一个新的客户端,服务端能在sessionOpen中捕获并处理客户连接;
2,服务器只有第一条消息被发出,
跟踪filter,编码解码都正常,
ExecutorFilter的messageReceived成功将解码消息压入tasksQueue,
此时客户端收到第一条消息;
3,当客户端下一个消息到达时,
ExecutorFilter的messageReceived成功将解码消息压入tasksQueue,
但是IoHandler没有触发messageReceived,
在对应的SessionTasksQueue中,可以看到第一条已发送的消息并没有被删除(仍然存在此queue中!),
此后所有此客户端的收发消息都没有正常处理,而线程池并没有run out,也没有检测到线程被挂起,
我使用的是OrderedThreadPoolExecutor,
// 编码解码
chain.addLast("codec", new ProtocolCodecFilter(new FireProtocolCodecFactory()));
// 业务线程
executor = new OrderedThreadPoolExecutor(100, 1000,
5, TimeUnit.SECONDS, Executors.defaultThreadFactory(), null);
chain.addLast("threadPool", new ExecutorFilter(executor));
4,打开minadebug,关键log如下:
正常:
2013-02-18 15:11:53,282 - Adding event SESSION_OPENED to session 2
Queue : [SESSION_OPENED, ]
2013-02-18 15:11:53,316 - Adding event MESSAGE_SENT to session
Queue : [MESSAGE_SENT, ]
2013-02-18 15:11:53,318 - Adding event MESSAGE_SENT to session 2
Queue : [MESSAGE_SENT, , MESSAGE_SENT, ]
2013-02-18 15:12:03,361 - Adding event MESSAGE_RECEIVED to session 2
Queue : [MESSAGE_RECEIVED, ]
异常:
2013-02-18 15:09:03,055 - Adding event SESSION_OPENED to session 114
Queue : [SESSION_OPENED, ]
2013-02-18 15:09:03,056 - Adding event MESSAGE_SENT to session 114
Queue : [MESSAGE_SENT, ]
2013-02-18 15:09:03,056 - Adding event MESSAGE_SENT to session 114
Queue : [MESSAGE_SENT, , MESSAGE_SENT, ]
2013-02-18 15:09:13,113 - Adding event MESSAGE_RECEIVED to session 114
Queue : [MESSAGE_SENT, , MESSAGE_SENT, , MESSAGE_RECEIVED, ]
求指教和探讨,问题如有描述不清晰请指明,谢谢
分享到:
相关推荐
在本项目中,"MINA_Server_Test"是一个实现了MINA服务器端功能的可运行示例。 首先,我们来详细了解一下MINA的核心概念和架构: 1. **异步事件驱动**:MINA采用非阻塞I/O模型,即NIO(New IO)模式,通过Selector...
4. **事件驱动模型**:Mina采用非阻塞I/O模型,当数据到达时,会触发相应的事件。例如,`sessionCreated`事件表示新连接建立,`messageReceived`事件则表示接收到客户端数据。 5. **数据编码与解码**:Mina提供了一...
总结来说,"MINA2 CS客户端服务器通信"涉及到的关键知识点包括MINA2框架的架构、非阻塞I/O、异步事件驱动模式、会话管理和数据编码解码。通过理解和熟练运用这些知识点,开发者能够构建出高效稳定的网络通信应用。
MINA2(全称:Java Multi-Protocol Infrastructure)是Apache软件基金会的一个开源项目,主要针对网络应用程序开发,尤其适用于创建高性能、高可扩展性的网络服务器。MINA2提供了一个抽象层,允许开发者编写与传输...
1. **事件驱动模型**:MINA2采用非阻塞I/O(NIO)模型,通过事件驱动的方式处理网络请求。这种模型允许服务器同时处理多个连接,显著提高了并发性能,尤其是在处理大量短连接时。 2. **协议无关性**:MINA2的设计...
- 分析了从传统的阻塞式服务器到多线程阻塞服务器,再到基于NIO的非阻塞服务器的演变过程,以及多线程的NIO服务器的实现方式。 - 强调了NIO相对于传统IO的优势,如更高的并发能力和更低的资源消耗。 ##### 3.2 异步...
Mina采用了事件驱动的非阻塞I/O模型,这使得它能够处理大量并发连接,同时保持较低的内存消耗。其核心组件包括Acceptor(监听并接受连接)、Session(表示一个网络连接)和Filter Chain(过滤器链,用于处理网络...
MINA的核心是其事件驱动、非阻塞I/O模型,这使得它在处理大量并发连接时表现出色,尤其适合于服务端应用。 标题"mina2 源码 mina"暗示我们将探讨MINA2的源代码,这是一个非常有价值的资源,对于理解MINA的工作原理...
它还可能包含示例代码,展示如何处理客户端连接、读写数据、异常处理等常见任务,让开发者能快速上手MINA服务器开发。 学习MINA API,开发者可以掌握异步网络编程的核心技巧,理解MINA如何通过事件驱动和过滤器链...
6. **Nio**与**Aio**:Mina2支持两种不同的I/O模型——NIO(非阻塞I/O)和AIO(异步I/O)。NIO适用于高并发场景,而AIO在低延迟和高吞吐量的应用中表现出色。 通过深入研究Mina2的源码,我们可以了解到如何优化网络...
2. **Web端集成**:在Web端,通常通过JavaScript的WebSocket API与Mina服务器进行交互,创建WebSocket连接,并定义消息收发的事件处理函数。 五、MinaServer项目文件结构 在提供的“MinaServer”压缩包文件中,...
包含了连接状态、缓冲区、读写事件、会话属性等信息,提供了读写数据、管理连接状态的接口。 2. **Filter链**: Mina采用过滤器链模式处理网络通信,每个Filter可以执行特定的任务,如数据编码解码、安全加密等。...
- **丰富的过滤器链**: Mina的过滤器系统允许开发者在数据读写过程中添加自定义逻辑,如数据编码解码、安全验证等,形成了一个强大的数据处理管道。 - **易于扩展**: 由于Mina的模块化设计,开发者可以很容易地扩展...
Apache Mina是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这个"apache-mina-2.0.4.rar"压缩包包含的是Apache Mina 2.0.4版本的源代码,是深入理解和定制Mina的...
MINA的核心理念是基于事件驱动和非阻塞I/O模型,这使得它在处理大量并发连接时表现出色,尤其适合构建高性能的服务器端应用。 二、了解Protocol Buffers Protocol Buffers是一种轻量级的数据序列化机制,它允许...
2. **MINA的架构设计**: MINA采用层状架构,主要分为四个层次:Filter、Session、Transport和Protocol。Filter层负责数据的编码和解码,Session层管理网络连接,Transport层处理实际的I/O操作,而Protocol层则处理...
每个网络连接都被抽象为一个Session对象,可以进行读写操作,并提供了事件驱动的机制来处理连接的打开、关闭、读写事件。 2. **Filter**:过滤器是Mina框架中的核心概念,它们按照特定顺序链接在一起,形成一个过滤...
2. **Apache_Mina_Server_2.0中文参考手册V1.0.pdf**:这是MINA服务器的中文版参考手册,涵盖了MINA的核心组件、API使用、配置方法等详细信息,是深入理解MINA不可或缺的资源。 3. **MINA使用手记[1] .shtml** 和 *...
- **Session**:Mina中的Session代表了客户端与服务器之间的连接状态,包括连接、断开、读写事件等。 - **IoHandler**:IoHandler是处理网络事件的核心接口,用于接收和发送数据,处理连接建立、关闭以及数据读写等...
- Mina使用事件驱动模型,当有新的连接、读写事件发生时,会触发相应的事件处理器执行回调方法。 3. **协议支持**: - Mina支持多种协议,如TCP/IP、UDP、HTTP、FTP等,可以通过自定义ProtocolHandler实现特定...