在linux在网络应用中的并发控制是linux构建网络服务的基础,下面列出linux并发控制的点
文件打开数量控制
1.进程文件打开数量控制
ulimit -n显示当前用户每个进程允许打开的最大文件数,可以用ulimit –n
修改这个数值。linux默认是1024
这1024个文件,包括进程监听的进程,进程间通信的进程,标准输出,标注输入,标准错误文件句柄等,实际上对外的连接处理能力要小于1024。要扩展进程的并发能力,首先要对这个限制进行设置。如果系统返回”Operation
notpermitted”之类的错误。说明设置未成功,可能是没有权限等。
2.用户打开文件数量控制
1.linux
还通过每个用户打开的文件数量限制,这个限制通过软限制和硬限制实现。需要实现高并发,还是对软限制和应限制进行设置。这个限制在/etc/security/limits.conf里面设置。
domaintypeitemvalue
spengsoftnofile10240
spenghardnofile10240
上面两行是一个示例第一列domain可以是一个用户,或者用户组,用正则表达式*可以表示任意的用户;第二列type有两个值,一个是soft,一个是hard分别软限制和硬限制;第三列item表示限制项目nofile定义为最大打开的文件数目。软限制要小于等于应限制。(超过软限制可能还能继续打开文件,但是绝对不能超过应限制)
如果一个用户打开10个进程,10个进程打开的文件句柄总数不能超过linux系统的软限制。
上面的设置好了之后,需要对系统配置,每次启动的时候设置模块。
2.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的硬限制,一般不应该修改,如果有必要修改,需要在/etc/rc.local脚本,添加如下echo
xxxx
>/proc/sys/fs/file_max。其中xxxx表示要设置的数值,也可以通过其他脚本设置,,另外注意/etc/profile文件是否对打开文件数做出了设置。修改后,重启计算机可以用ulimit
-a查看各项限制。
4.修改网络内核对并发的限制
设置好上述之后如果还发生连接失败的情况,达不到理想的并发数可能有如下几种情况:
1.linux
网络内核对本地端口范围进行了限制。设置此选项的办法是修改/etc/sysctl.conf。在文件中添加或者修改下面的行
net.ipv4.ip_local_port_range = 1024 65000
添加后保存文件,并运行sysctl –p
系统不提示错误表示设置成功。这样系统就可以建立65000的并发连接,(本地端口号最小值必须大于1024)
2.第二种可能是linux内核的ip_table的对最大tcp连接的跟踪的限制,这个修改在/etc/sysctl.conf中,添加如下行net.ipv4.ip_conntrack_max
= 10240。保存文件后,执行sysctl -p,系统不返回错误表示执行成功。
如果觉得《linux并发控制方法 linux系统并发控制》对你有帮助,请点赞、收藏,并留下你的观点哦!