单台服务器上并发TCP连接数
    
问题:一台服务器到底能够支持多少TCP并发连接呢?

1. 文件描述符限制:
    对于服务器来说,每一个TCP连接都要占用一个文件描述符,一旦文件描述符使用完,新的连接到来返回给我们的错误是"Socket/File:Can't open so many files"

这时,你需要明白操作系统可以打开最大文件数的限制。

进程限制(用户限制):
            执行 ulimit -n 输出1024,说明对于一个进程而言最多只能打开1024个文件,所以你要采用此默认配置最多也就可以并发上千个TCP连接。

临时修改:ulimit -n 1000000,但是这种临时修改只对当前登录的用户目前使用的环境有效,系统重启或用户退出会就失效。

永久生效:修改/etc/security/limits.conf 文件:

                *    soft    nofile    1000000
* hard nofile 1000000
ulimit -SHn 1000000 >> /etc/rc.local

全局限制:
            执行 cat /proc/sys/fs/file-nr  
                1216    0    187612
                (1) 1216:已经分配的文件描述符数
                (2) 0:已经分配但没有使用的文件描述符数,这里的意思是内核分配了1216,然后1216个都用光了,所以“分配了但没有使用的 句柄数目” 为 0 
                (3) 187612:最大文件句柄数
                注意:在kernel2.6 版本中第二项的值总为0,这并不是一个错误,它实际上意味着已经分配的文件描述符无一浪费的都已经
                被使用。

可以通过在/etc/sysctl.conf里定义fs.file-max = 1000000 来调整最后一个值的大小

2. 端口号范围限制:
    操作系统上端口号1024以下是系统保留的,从1024-65535是用户使用的,由于没有tcp连接都要占用一个端口号,所以我们最多可以使用
    60000多个并发连接,这是对客户端的理解。
    分析一下:
        (1) 如何标识一个TCP连接? 系统用一个4元组来标识一个TCP连接:(local ip,local port,remote ip, remote port) 对于accept来说,accept的sock不占新的端口 第一个local ip , local port 代表客户端的ip地址和端口号。
        而我们作为服务器实际只是使用了bind这一个端口
        说明端口65535并不是并发量的限制。
        (2) server最大tcp连接数:server通常固定在某一个本地端口上监听,等待client的连接请求。不考虑地址重用的情况下,即使多个ip
        本地监听端口也是独占的。因此server端tcp连接4元组中只有remote ip 和 remote port 是可变的,因此最大tcp连接为
        客户端ip数 * 客户端port数。 对于ipv4,不考虑ip地址等因素,最大tcp连接约为2的32次方(ip数) * 2的16次方(port数)
        也就是  server端:单机最大tcp连接数约为:2的48次方。

问题1:查看文件描述符使用 lsof查看到的句柄数和/proc/sys/fs/file-nr 值不一样,为什么?

        [root@localhost ~]# lsof | wc -l
710
[root@localhost ~]# !cat
cat /proc/sys/fs/file-nr
416 0 1000000

答案:一个文件可以被多个进程打开,lsof所列出来的是每个进程所打开的文件,所以lsof的数值比file-nr要大很正常。

问题2:关于文件句柄到底设置多大合适?

查看句柄数的方法:

        [root@node1 ~]# cat /proc/sys/fs/file-nr
832 0 97321
[root@node1 ~]# cat /proc/sys/fs/file-max
97321
默认最大句柄数为97321

这个值在kernel的文档里意思是file-max一般为内存大小(KB)的10%来计算,如果使用shell,可以这样计算:
        grep -r MemTotal /proc/meminfo | awk '{printf("%d",$2/10)}'  计算出来的值一般和默认最大句柄数近似。

        echo "fs.file-max = 100133" >> /etc/sysctl.conf && sysctl -p

【 Linux 】单台服务器上并发TCP连接数(转)的更多相关文章

  1. 【 Linux 】单台服务器上并发TCP连接数

    单台服务器上并发TCP连接数    问题:一台服务器到底能够支持多少TCP并发连接呢? 1. 文件描述符限制:    对于服务器来说,每一个TCP连接都要占用一个文件描述符,一旦文件描述符使用完,新的 ...

  2. 网络编程释疑之:单台服务器上的并发TCP连接数可以有多少

    曾几何时我们还在寻求网络编程中C10K问题的解决方案,但是现在从硬件和操作系统支持来看单台服务器支持上万并发连接已经没有多少挑战性了.我们先假设单台服务器最多只能支持万级并发连接,其实对绝大多数应用来 ...

  3. socket跟TCP/IP 的关系,单台服务器上的并发TCP连接数可以有多少

    常识一:文件句柄限制 在Linux下编写网络服务器程序的朋友肯定都知道每一个tcp连接都要占一个文件描述符,一旦这个文件描述符使用完了,新的连接到来返回给我们的错误是"Socket/File ...

  4. Linux两台服务器上互传文件

    主服务器:192.168.100.30: 文件所在服务器:192.168.100.31: 1. 在主服务上拷贝文件: #scp root@192.168.100.31:/home/a.txt /hom ...

  5. 高性能网络编程(一):单台服务器并发TCP连接数到底可以有多少

    高性能网络编程(一):单台服务器并发TCP连接数到底可以有多少     阅读(81374) | 评论(9)收藏16 淘帖1 赞3   JackJiang Lv.9    1 年前 | 前言 曾几何时我 ...

  6. 单台服务器最大tcp连接

    如果对服务器进行压力测试,常常出现这种情况 tcp连接数过多 netstat   -an    windows查看tcp连接数 那么怎么增加单台服务器的最大连接数呢?       最简单的办法,增加内 ...

  7. Linux课程---16、apache虚拟主机设置(如何在一台服务器上配置三个域名)

    Linux课程---16.apache虚拟主机设置(如何在一台服务器上配置三个域名) 一.总结 一句话总结:有三个网站www.lampym.com,bbs.lampym.com,mysql.lampy ...

  8. 不要将缓存服务器与Tomcat放在单台机器上,否则出现竞争内存问题

    缓存分为本地缓存和远程分布式缓存,本地缓存访问速度更快但缓存数据量有限,同时存在与应用程序争用内存的情况. 1.不要将缓存服务器与Tomcat放在单台机器上,否则出现竞争内存问题 2.不要将缓存服务器 ...

  9. [转]linux将一个服务器上的文件或者文件夹复制到另一台服务器上

    本文转载自<linux 将一个服务器上的文件或者文件夹复制到另一台服务器上>,有时间实践一把 使用scp将一个Linux系统中的文件或文件夹复制到另一台Linux服务器上 复制文件或文件夹 ...

随机推荐

  1. timeago.js-时间显示插件

    注意事项: 1. 时间格式 = “2018-03-02 17:13:00”时,动态获取的时间无法通过 拼接字符串的方法 添加到 dom元素的 datetime属性上,结果为 <div class ...

  2. OC利用正则表达式获取网络资源(网络爬虫)

    在开发项目的过程,很多情况下我们需要利用互联网上的一些数据,在这种情况下,我们可能要写一个爬虫来爬我们所需要的数据.一般情况下都是利用正则表达式来匹配Html,获取我们所需要的数据.一般情况下分以下三 ...

  3. Programmable current source requires no power supply

    Engineering labs are usually equipped with various power supplies, voltmeters, function generators, ...

  4. java 基础数据结构源码详解及数据结构算法

    http://www.cnblogs.com/skywang12345/category/455711.html http://www.cnblogs.com/liqiu/p/3302607.html

  5. HDU 3436 Queue-jumpers

    题意: n个人站成一排  一開始是从1到n有序的  如今有三个操作  Top操作是将一个人排到队首  Query操作是询问某个人如今排第几  Rank操作是询问排某个位置的人是谁 思路: 将队伍扭来扭 ...

  6. [翻译] TSActivityIndicatorView 自定义指示器

    TSActivityIndicatorView 自定义指示器 https://github.com/tomkowz/TSActivityIndicatorView TSActivityIndicato ...

  7. JAVA泛型通配符T,E,K,V区别,T以及Class<T>,Class<?>的区别以及接口里default方法

    使用大写字母A,B,C,D......X,Y,Z定义的,就都是泛型,把T换成A也一样,这里T只是名字上的意义而已 ? 表示不确定的java类型 T (type) 表示具体的一个java类型 K V ( ...

  8. DedeCms V5.6 plus/advancedsearch.php 任意sql语句执行漏洞

    漏洞版本: DedeCms V5.6 漏洞描述: DedeCMS内容管理系统软件采用XML名字空间风格核心模板:模板全部使用文件形式保存,对用户设计模板.网站升级转移均提供很大的便利,健壮的模板标签为 ...

  9. TestNG测试带参构造函数的类

    今天被同事问到一个问题,问题描述如下: 一个测试类,只有一个带参构造函数.在带参构造函数上加@Test,同时加@Parameters注解从testng.xml中传递参数.为保证测试函数在带参构造函数之 ...

  10. ElementUI日期选择器时间选择范围限制

    ElementUI是饿了么推出的一套基于vue2.x的一个ui框架.官方文档也很详细,这里做一个element-ui日期插件的补充,官方文档中使用picker-options属性来限制可选择的日期,这 ...