ubuntu设置epoll最大连接数

在ubuntu系统中写了一个epoll的测试程序,

windows端写了一个client,开启2000个线程,每个线程都与epoll测试程序建立连接,

结果epoll测试程序接收1015个连接之后,client的connect就返回错误10061,也就是WSAECONNREFUSED,被远端主机拒绝,即使没返回错误,send也会返回10054,也就是WSAECONNRESET,被远端主机强制关闭连接。

根据返回结果来看,是服务端程序,也就是epoll测试程序所在的系统系统拒绝了连接请求,可以内存明明够用,1015个连接未免太少,于是想办法增加服务端打开连接数,以前知道linux系统可能会限制打开文件数,所以查阅了一下,

执行命令

ulimit -a

可以查看当前系统所有限制

ulimit -n 30000

设置最大打开文件数为3万

注意,不要用一个终端测试epoll程序,一个终端,输入ulimit命令,因为该命令只是局部临时有效,(吃过亏,新开一个终端输入命令,看结果是改了,再原终端执行epoll程序,最大连接数还是1015)

一定要在当前在终端执行修改命令,然后在当前终端执行测试程序。client中把2000个线程改为8000个线程也毫无压力。

ulimit是局部临时生效,要永久生效就要修改配置文件

/etc/security/limits.conf

* soft nofile 65534
* hard nofile 65534

改为

root soft nofile 65534
root hard nofile 65534

不知为何非要指定用户

修改之后终端输入ulimit -a看到open files还是1024,sudo一下之后就变成65534了,可见是修改后直接生效,而之前修改的没有关闭的终端还是之前命令设置的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值