临时方法是ulimit -n 8192 这个方法是临时的,也就是重启电脑或者重新登录后又会恢复成1024,且只有 root 用户有权限改。
永久方法:
修改以下两个文件:
1./etc/security/limits.conf
vi /etc/security/limits.conf
加上:
* soft nofile 10240
* hard nofile 20480
(数目按情况自己改)
2./etc/pam.d/login
vi /etc/pam.d/login
在后面加上
session required pam_limits.so
先查看当前Linux的系统最大连接数是多少,可以使用命令ulimit -a可以查看到结果是在open file中为1024的个连接数。
可以在命令行中输入vi /etc/security/limits.conf来进行修改配置项 。
在最后一行中进行添加为
* soft nofile 65536
* hard nofile 65536
设置完成之后,就需要重新启动系统,重启命令为shutdown -r now 。
重启完成之后,需要查看是系统连接数是否修改成功了。同样使用的命令为ulimit -a。
链接:https://www.jianshu.com/p/490e2981545c实现单机的百万连接,瓶颈有以下几点:
1、如何模拟百万连接
2、突破局部文件句柄的限制
3、突破全局文件句柄的限制
在linux系统里面,单个进程打开的句柄数是非常有限的,一条TCP连接就对应一个文件句柄,而对于我们应用程序来说,一个服务端默认建立的连接数是有限制的。
下面通过优化要突破这个连接数。
优化
1、局部文件句柄限制
一个jvm进程最大能够打开的文件数.png
修改65535的这个限制
vi /etc/security/limits.conf
在文件末尾添加两行
*hard nofile 1000000
soft nofile 1000000
soft和hard为两种限制方式,其中soft表示警告的限制,hard表示真正限制,nofile表示打开的最大文件数。整体表示任何用户一个进程能够打开1000000个文件。注意语句签名有
号 表示任何用户
shutdown -r now 重启linux
再次查看
已经修改生效了。
测试
最大连接数10万多.png
2、突破全局文件句柄的限制
cat /proc/sys/fs/file-max
file-max 表示在linux 中最终所有x线程能够打开的最大文件数
修改这个最大值:
sudo vi /etc/sysctl.conf
在文件的末尾添加 fs.file-max=1000000
然后让文件生效 sudo sysctl -p
这个时候再查看一下全局最大文件句柄的数已经变成1000000了
测试
最大连接数36万多.png
注: 测试的服务器型号
cpu 相关配置
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)