实战解读丨Linux下实现高并发socket最大连接数的配置方法
摘要:Linux操作系统,无论是编写客户端程序还是服务端程序,在高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制。
【诉求场景】
Linux操作系统,无论是编写客户端程序还是服务端程序,在高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。
本文档主要是对文件数量并发限制做修改。
【配置方法】
1、修改用户进程可打开文件数限制,如图所示:
说明:
ulimit –n :查看当前系统允许当前用户进程打开的文件数限制。
默认为1024:表示当前用户的每个进程最多允许同时打开1024个文件。
这1024个文件中还得去除每个进程打开的标准输入、标准输出、标准错误、服务器监听socket等等,剩下的可用于客户端socket连接的文件数就只有
1024-10=1014个左右,也就是基于Linux的程序最多允许同时1014个TCP并发连接。
(1)修改Linux系统对用户打开软限制和硬限制,如图所示:
vim /etc/security/limits.conf
添加 root soft nofile 1921
root hard nofile 1921
说明:root代表修改了root用户打开文件的数的限制,可以用“*”代表所有用户soft和hard指定要修改的软限制还是硬限制。1921指定修改的新限制值,也就是最大打开的文件数(软限制一定要小于或等于硬限制)
(2)修改 /etc/pam.d/login文件,如图所示:
添加:session required /lib/security/pam_limits.so
说明:Linux在用户登录系统后应该调用pam_limits.so模块来设置系统对该用户可使用的各种资源数量的最大限制(包括用户可打开的最大文件数限制),
pam_limits.so模块就会从/etc/security/limits.conf文件中来读取这个这些限制值
(3)查看linux系统级最大打开文件数限制cat /proc/sys/fs/file-max,如图所示:
说明:这表示linux系统最多同时允许打开(包括所有用户打开文件数的总和)96854个文件,是linux系统级的硬限制,所有用户打开的文件数都不得超过这个数值, 一般不修改这个值,如果想修改,命令为vim /etc/rc.local。
(4)添加:echo 数值 > /proc/sys/fs/file-max,修改完重启系统,重启后执行ulimit –n查看一下,如图所示:
(5)如果重启后执行ulimit –n查看的值还是小于上面修改后的最大值,可能是用户登录脚本/etc/profile中使用ulimit –n命令,已将用户同时打开的文件数做了限制,只能在/etc/profile找到ulimit –n限制用户同时打开的最大文件数,可以删除也可以修改值,重启系统即可。
(6)上面操作可以解决高并发TCP连接处理打开文件数量的系统限制。
有时尽管解开了系统对用户同时打开文件数的限制,但仍会出现并发TCP连接数增加到一定数量时,再也无法创建新的TCP连接的现象。
2、linux网络内核对本地端口号范围有限制,例如当前系统内核限制本地端口号的范围为 1024-32768,当系统同一时间存在大量的TCP客户端连接时,由于每个TCP客户端都要占据一个唯一的本地端口号,如果TCP端口号的范围不够用,就会提示 :can't assign requested address ,这就是由于内核编译时默认设置的本地端口号范围太小。
修改:/etc/sysctl.conf
添加:net.ipv4.ip_local_port_range = 1024 65535(最大值要小于或等于65535)
执行:sysctl –p,如果没有报错,说明设置成功,显示内容包含图中的内容:
以上是单独一个进程最大同时可以打开63000多个TCP客户端连接的设置。
点击关注,第一时间了解华为云新鲜技术~
实战解读丨Linux下实现高并发socket最大连接数的配置方法相关推荐
- Linux下解决高并发socket最大连接数限制,tcp默认1024个连接
linux作为服务器系统,当socket运行高并发TCP程序时,通常会出现连接建立到一定个数后不能再建立连接的情况 本人在工作时,测试高并发tcp程序(GPS服务器端程序),多次测试,发现每次连接建立 ...
- 870-Linux下解决高并发socket最大连接数限制
linux作为服务器系统,当socket运行高并发TCP程序时,通常会出现连接建立到一定个数后不能再建立连接的情况. 我在做集群集群聊天服务器项目的时候,多次测试,发现每次连接建立到1000左右时,再 ...
- ubuntu优化服务器网络连接数,ubuntu下解决高并发socket最大连接数限制,tcp默认1024个连接...
linux系统默认ulimit为1024个访问 用户最多可开启的程序数目.一般一个端口(即一个进程)的最高连接为2的16次方65536 通过这个命令 ulimit -n 可以看到默认值为1024 查看 ...
- Linux下高并发socket最大连接数所受的各种限制
修改最大打开文件数 # ulimit -n 修改最大进程数 # ulimit -u ------------------------------------------------------ Lin ...
- linux socket文件数限制,Linux下高并发socket最大连接数所受的限制问题
Linux下高并发socket最大连接数所受的限制问题1.修改用户进程可打开文件数限制在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时, 最高的并发数量都要受到系统对 ...
- Linux进程最大socket数,Linux下高并发socket最大连接数所受的各种限制(详解)
1.修改用户进程可打开文件数限制 在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每 ...
- 转:Linux下高并发socket最大连接数所受的各种限制
1.修改用户进程可打开文件数限制 在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每 ...
- 教你修改Linux下高并发socket最大连接数所受的各种限制
1.修改用户进程可打开文件数限制 在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开 文件数量的限制(这是因为系统为 ...
- 专业的LaTeX: 在Linux下编写高质量的文档
专业的LaTeX: 在Linux下编写高质量的文档 Linux下的OpenOffice.KWord等字处理软件虽然在功能上与Microsoft Word类似,但目前在易用性和可用性方面仍然存在许多不足 ...
最新文章
- Windows消息机制学习笔记(二)—— 窗口与线程
- Unity3D面试——真实的面试,unity3d面试
- 怎么检测mysql卸载完全_怎么检查mysql有没有删干净
- MySQL的timestamp字段可以使用的范围是多少
- Java笔记-RabbitMQ的消息确认机制(事务)
- 如何腾出计算机内存,win10这几个步骤,瞬间为c盘腾出多G内存
- 四川传媒学院计算机应用技术专业,2017年四川传媒学院开设哪些专业(高职/专科)...
- 逃税被罚13.4亿的薇娅将于3月复出?
- Spring scope属性详解
- 如何使用jMeter对某个OData服务进行高并发性能测试
- matlab如何求距平,matlab编程语句
- 像电影里黑客高手一样写代码
- 2022 最新Robots.txt文件教程
- vue+element-admin学习连接
- 欲练神功必先自宫,String 自宫后“不可变性”到底有啥好处?
- 谷歌浏览器与IE浏览器不兼容问题
- 修改Mac默认设置使Mac支持NTFS硬盘的读写
- linux配置samba共享目录及权限
- jQuery夹娃娃小游戏
- 解决 linux(centos7)word转换pdf时,pdf乱码问题
热门文章
- HTML autocomplete
- Bootstrap HTML编码语法规范
- es6 遍历 Symbol 属性名
- 重读读书笔记的重要性
- 载波恢复算法 Blind Phase Search 算法(盲相位搜索算法 BPS算法)
- python 1+2+3+4+5+6+7+8+9累加求和_求1!+2!+3!+4!+5!+6!+7!+8!+9!+10!+...+N! N阶阶乘求和算法 JAVA C Python...
- 更改npm淘宝源,并设置cnpm
- 依赖反转原则DIP 与使用了Repository模式的asp.net core项目结构
- bzoj1013 [JSOI2008]球形空间产生器sphere
- FPGA中亚稳态——让你无处可逃