Mina的大量连接问题
来源:互联网 发布:ios常见多线程编程 编辑:程序博客网 时间:2024/05/14 18:17
最近用到了Mina,发现在CentOS6.2 上,当接收到400个来自客户端的TCP连接的时候,新的TCP的连接能建立成功
但是新建立的TCP连接收到的数据,不能再抛给应用层,而一直堵在缓冲区,如下
使用命令:netstat -nat |grep 65534
因为TCP的三次握手是操作系统控制的,所以新的TCP连接能够建立成功。
为什么会这样呢?当找到了真正的原因,只能感叹,作为一个java 使用者,比起c 的使用者,真是苦逼
因为Mina使用的是selector,而在java里,实现的selector会为每一个新的连接,使用2个PIPE(管道)来发送数据
所以当我开辟了400个连接的时候,已经使用了800个管道,而管道的建立在Linux里会占用“文件描述符”
而默认的文件描述符是1024个,所以当有新的连接来到时,可能文件描述符就不够用了
可能你们要问,1024/2=512,应该是能建立512个socket才对啊?
可是事实上不是如此,因为程序本身使用了一些文件描述符和数据库的连接,
然而java 虚拟机也使用了一些PIPE来控制其它事情吧
所以通过lsof可以查看,你的进程到底使用了多少文件描述
lsof -p PID
最后,通过改变用户能够使用的最大文件描述符的个数,方法如下:
vi /etc/security/limits.conf
加上:
* soft nofile 65534
* hard nofile 65534
该问题就迎刃而解了
所以,当我跑3000个客户端的实时连接,也没有任何问题了
0 0
- Mina的大量连接问题
- MINA 连接中断的相关问题。。。
- 关于linux服务器出现大量的Time_WAIT socket连接问题
- Mina源码阅读笔记(三)-Mina的连接IoAccpetor
- Mina源码阅读笔记(三)-Mina的连接IoAccpetor
- Mina源码阅读笔记(三)-Mina的连接IoAccpetor
- Mina源码阅读笔记(三)-Mina的连接IoAccpetor
- MINA连接
- 应用mina的例子做了一些修改,但有关于连接数的问题
- 应用mina的例子做了一些修改,但有关于连接数的问题
- Mina架构的异常问题......
- MIna学习 连接类的整体框架
- Apache Mina的SSL连接API
- 对服务器上出现大量的SYN_RECV状态的TCP连接的问题分析
- 对服务器上出现大量的SYN_RECV状态的TCP连接的问题分析
- 对服务器上出现大量的SYN_RCVD状态的TCP连接的问题分析
- [MINA]android2.2中使用mina注意的问题
- [经验随笔]大量close_wait状态连接问题的分析与解决
- C#转 JAVA 注意事项
- 详谈 Jquery Ajax 异步处理Json数据.
- BestCoder Round #73 (div.2)(B)并查集
- bzoj1006: [HNOI2008]神奇的国度
- 费用流解决最优匹配 PKU3686
- Mina的大量连接问题
- Markdown 编辑器集锦
- 关于async和await的一些误区实例详解
- 监听文本框的三种方式
- jquery easyui添加图标扩展
- 构筑测试体系
- Docker pull 出现的 Server error: Status 0 while fetching image layer
- ARP协议的工作原理
- KMP 算法