摘要: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最大连接数的配置方法的更多相关文章

  1. Linux下解决高并发socket最大连接数所受的各种限制(解除IO限制)

    linux作为服务器系统,当运行高并发TCP程序时,通常会出现连接建立到一定个数后不能再建立连接的情况 本人在工作时,测试高并发tcp程序(GPS服务器端程序),多次测试,发现每次连接建立到3800左 ...

  2. Linux下解决高并发socket最大连接数限制,tcp默认1024个连接

    linux作为服务器系统,当socket运行高并发TCP程序时,通常会出现连接建立到一定个数后不能再建立连接的情况 本人在工作时,测试高并发tcp程序(GPS服务器端程序),多次测试,发现每次连接建立 ...

  3. Linux下高并发socket最大连接数所受的各种限制(详解)

    1.修改用户进程可打开文件数限制 在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每 ...

  4. [转载] Linux下高并发socket最大连接数所受的各种限制

    原文: http://mp.weixin.qq.com/s?__biz=MzAwNjMxNjQzNA==&mid=207772333&idx=1&sn=cfc8aadb422f ...

  5. Linux下高并发socket最大连接数所受的各种限制

    http://blog.csdn.net/guowake/article/details/6615728 1.修改用户进程可打开文件数限制 在Linux平台上,无论编写客户端程序还是服务端程序,在进行 ...

  6. Linux下高并发socket最大连接数

    http://soft.chinabyte.com/os/285/12349285.shtml (转载时原文内容做个修改) 1.修改用户进程可打开文件数限制 在Linux平台上,无论编写客户端程序还是 ...

  7. Linux下高并发socket最大连接数各种限制的调优

    1.修改用户进程可打开文件数限制 在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每 ...

  8. Linux下高并发socket最大连接数所受的各种限制(转)

    1.修改用户进程可打开文件数限制在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个 ...

  9. 教你修改Linux下高并发socket最大连接数所受的各种限制

    1.修改用户进程可打开文件数限制 在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开 文件数量的限制(这是因为系统为 ...

随机推荐

  1. Flink状态妙用

    本文主要介绍福布湿在flink实时流处理中,state使用的一些经验和心得.本文默认围观的大神已经对flink有一定了解,如果围观过程中发现了有疑问的地方,欢迎在评论区留言. 1. 状态的类别 1.1 ...

  2. 006_go语言中的if else条件语句

    代码演示 package main import "fmt" func main() { if 7%2 == 0 { fmt.Println("7 is even&quo ...

  3. 20、Java 泛型

    1.晓之以理,动之以码 学Java就是很上头哦,一来直接三连问!!! 什么是泛型?为什么要用泛型?泛型怎么用? 当然泛型在Java中有很重要的一个地位,在面向对象编程以及在各种设计模式中有非常广泛的应 ...

  4. Spring Boot打包瘦身 Docker 使用全过程 动态配置、日志记录配置

    springBoot打包的时候代码和jar包打包在同一个jar包里面,会导致jar包非常庞大,在不能连接内网的时候调试代码,每次只改动了java代码就需要把所有的jar包一起上传,导致传输文件浪费了很 ...

  5. 网易云音乐ncm格式分析以及ncm与mp3格式转换

    目录 NCM格式分析 音频知识简介 两种可能 GitHub项目 格式分析 总体结构 密钥问题 代码分析 main函数 导入模块 dump函数 参考资料 代码完整版 转换工具 ncmdump ncmdu ...

  6. 【模式识别与机器学习】——最大似然估计 (MLE) 最大后验概率(MAP)和最小二乘法

    1) 极/最大似然估计 MLE 给定一堆数据,假如我们知道它是从某一种分布中随机取出来的,可是我们并不知道这个分布具体的参,即“模型已定,参数未知”.例如,我们知道这个分布是正态分布,但是不知道均值和 ...

  7. POW共识机制原理及优缺点

    PoW共识机制 POW工作量证明(英文全称为Proof of Work)在比特币之前就已经出现,中本聪在设计区块链的共识机制的时候就是借鉴了POW工作量证明.常见的是利用HASH运算的复杂度进行CPU ...

  8. LeetCode 646 最长数对链详解

    题目描述 给出 n 个数对. 在每一个数对中,第一个数字总是比第二个数字小. 现在,我们定义一种跟随关系,当且仅当 b < c 时,数对(c, d) 才可以跟在 (a, b) 后面.我们用这种形 ...

  9. 使用 VMware Workstation Pro 让 PC 提供云桌面服务——学习笔记(二)

    实验效果: 这次希望的效果是能够用远程桌面来实现 . 这里参考了博客 https://www.cnblogs.com/wwang/archive/2011/01/06/1928933.html 操作步 ...

  10. Git使用之submodule

    入职第一周,就因为clone项目而产生了很大的障碍,花了差不多三四个小时才定位问题并解决,记录一下. 一.问题 当我们在使用Git克隆项目的时候,无法克隆下来一个文件夹.记该文件夹为A,A在远程仓库是 ...