如何让单机下Netty支持百万长连接?

如果要支持百万长连接,需要有很多的工作要做

操作系统

首先就是要突破操作系统的限制。
在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个Socket句柄,每个socket句柄也是一个文件句柄)。可使用ulimit命令查看系统允许当前用户进程打开的句柄数限制:

 ulimit -n
 1024

这表示当前用户的每个进程最多允许同时打开1024个句柄,这1024个句柄中还得出去每个进程必然打开的标准输入,标准输出,标准错误,服务器监听socket,进程间通讯的unix域socket等文件,那么剩下的可用于客户端socket连接的文件数只有大概1024-10=1014个左右。也就是说缺省情况下,基于Linux的通讯程序最多允许同时1014个TCP并发连接对于想支持更高数量的TCP并发连接的通讯处理程序,就必须修改Linux对当前用户进程同时打开的文件数量,修改单个进程打开最大文件数限制的最简单的办法就是使用ulimit命令:

 ulimit -n 1000000

如果系统回显类似于"Operation not permitted"之类的话,说明上述限制修改失败,实际上是因为指定的数值超过了Linux系统对该用户打开文件数的软限制或硬限制,因此,就需要修改Linux系统对用户的关于打开文件数的软限制和硬限制.
软限制(soft limit):是指Linux在当前系统能够承受的范围内进一步限制一个进程同时打开的文件数;
硬限制(hard limit):是根据系统硬件资源状况(主要是系统内存)计算出来的系统最多可同时打开的文件数量.
第一步:修改/etc/security/limits.conf文件,在文件中添加如下行

* soft nofile 1000000
* hard nofile 1000000

'*'号表示修改所有用户的限制;
soft 和hard为两种限制方式,其中soft表示警告的限制,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

coffee_babe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值