要想服务器能够支持百万个client的连接,我们要知道,是什么会限制服务器连接的数量。这里我们需要搞清楚这几个问题;
- 操作系统能否支持百万连接?
- 操作系统维持百万连接需要多少内存?
1. 操作系统能否支持百万连接?
大多数的操作系统是不能达到百万级别的连接,是因为系统参数限制了这一操作,达到数十万以及数百万的连接的时候,会大量地消耗操作系统的资源。但是我们可以修改。
全局修改
我们使用cat /proc/sys/fs/file-nr,查看全局最大文件打开数Max open files.

我们可以看到第三个数字1048576,有100w,说明此操作系统可以达到100w的连接。如果有的操作系统没有达到这个数值,怎么办呢?
我们可以用 root 权限修改 /etc/sysctl.conf 文件:添加这两个参数
fs.file-max = 1048576
net.nf_conntrack_max = 1048576
fs.file-max:是打开文件fd最大值
net.nf_conntrack_max:表示网络netfilter可以容纳的最多文件个数。
使用:sudo sysctl -p /etc/sysctl.conf 使文件生效。
进程限制
在一个进程中,我们怎么修改参数使之暂时生效呢。
执行:
ulimit -a

可以看到,这里有个open files参数,我们可以使用 -n来设置
ulimit -n 1048576
但是这个机器重启就会恢复到原来的数值。
我们怎么样可以永久修改呢?
修改 /etc/security/limits.conf 文件
在文件的最后一行添加:
* soft nofile 1048576
* hard nofile 1048576
这四个分别代表 domain, type

最低0.47元/天 解锁文章
1986

被折叠的 条评论
为什么被折叠?



