zoukankan      html  css  js  c++  java
  • Socket TCP Server一个端口可以有多少个长连接?受到什么影响?linux最大文件句柄数量总结

    Socket TCP Server一个端口可以有多少个长连接?

    网上答案很多,不知道那个才是正确的 

    理论上是无限的

    16、Linux中,一个端口能够接受tcp链接数量的理论上限是?

    A.1024

    B.65535

    C.65535 * 65535

    D.无上限

    参考答案:D

    重点:但是会受到打开的最大文件数量和内存决定的

    Linux上连接数,理论上可以达到没有上限,但实际上由于Linux中一切都是文件,Linux允许打开的文件的句柄数的上限决定...

    Linux允许打开的文件的句柄数的上限为65535?.

    没有修改配置情况下,查看 ulimit -n 是1024, 但是可以修改的 具体是根据内存决定的 ,不知道网上所说的上限为65535是为什么?

    因为ulimit -n 是限制用户的打开文件的最大上限,可以修改,决定于limits.conf的值

    ulimit -nlimits.conf里最大文件数设定不能超过/proc/sys/fs/file-max的值,这也是搞笑了,

    /proc/sys/fs/file-max是系统给出的建议值,系统会计算资源给出一个和合理值,一般跟内存有关系,内存越大,改值越大,但是仅仅是一个建议值,limits.conf的设定完全可以超过/proc/sys/fs/file-max

    那么可以 总结出 一个端口可以有多少个长连接 是无限个的,ulimit -n 的上限也不是 65535,文件数上限也是归根到底根据内存的大小决定的

    注:有不同答案的望指正、评论

    原创文章,转载:http://jameswxx.iteye.com/blog/2096461

    写这个文章是为了以正视听,网上的文章人云亦云到简直令人发指。到底最大文件数被什么限制了?

    shell级限制 
    通过ulimit -n修改,如执行命令ulimit -n 1000,则表示将当前shell的当前用户所进程能打开的最大文件数量设置为1000.

     ulimit -n

    非root用户只能越设置越小,不能越设置越大
    我在机器上以非root先执行:
    [wxx@br162 etc]$ ulimit -n 900
    [wxx@br162 etc]$
    执行成功,再增大:
    [wxx@br162 etc]$ ulimit -n 901
    -bash: ulimit: open files: cannot modify limit: Operation not permitted
    [wxx@br162 etc]$
    增加失败,如果减少则是OK的:
    [wxx@br162 etc]$ ulimit -n 899
    [wxx@br162 etc]$
    如果再增加到900是不行的:
    [wxx@br162 etc]$ ulimit -n 900
    -bash: ulimit: open files: cannot modify limit: Operation not permitted
     
    root用户不受限制
    首先切换到root:
    [wxx@br162 etc]$ sudo su -
    [root@br162 ~]#
    查看下当前限制:
    [root@br162 ~]# ulimit -n
    1000000
    [root@br162 ~]#
    增大:
    [root@br162 ~]# ulimit -n 1000001
    [root@br162 ~]#
    可以成功增大,再减小:
    [root@br162 ~]# ulimit -n 999999
    [root@br162 ~]#
    减小也是成功的,再增大:
    [root@br162 ~]# ulimit -n 1000002
    [root@br162 ~]#
    也是ok的,可见root是不受限制的。
     
    ulimit里的最大文件打开数量的默认值
    如果在limits.conf里没设置,则默认值是1024,如果limits.con设置,则默认值以limits.conf为准。例如我换了一台机器,登录进去,ulimit -n显示如下:
    [root@zk203 ~]# ulimit -n
    2000
    这是因为我的limits.conf里的文件打开数是2000,如下:
    [root@zk203 ~]# cat /etc/security/limits.conf
    root soft nofile 2000
    root hard nofile 2001
    如果limits.conf里不做任何限制,则重新登录进来后,ulimit -n显示为1024。
    [root@zk203 ~]# ulimit -n
    1024
     
    ulimit修改后生效周期
    修改后立即生效,重新登录进来后失效,因为被重置为limits.conf里的设定值
     

    二 /etc/security/limits.conf

    网上还缪传,ulimit -n设定的值不能超过limits.conf里设定的文件打开数(即soft nofile)
    好吧,其实这要分两种情况,root用户是可以超过的,比如当前limits.conf设定如下:
    root soft nofile 2000
    root hard nofile 2001
    但是我用root将最大文件数设定到5000是成功的:
    [root@zk203 ~]# ulimit -n 5000
    [root@zk203 ~]# ulimit -n
    5000
    [root@zk203 ~]#
    但是非root用户是不能超出limits.conf的设定,我切换到wxx,执行命令如下:
    [wxx@zk203 ~]# ulimit -n 5000
    -bash: ulimit: open files: cannot modify limit: Operation not permitted
     
    所以网上的说法是错误的,即使非root用户的最大文件数设置不能超过limits.conf的设置,这也只是一个表象,实际上是因为,每个用户登录进来,ulimit -n的默认值是limits.conf的�0�2soft nofile指定的,但是对于非root用户,ulimit -n只能越来越小,不能越来越大,其实这个才是真正的原因,但是结果是一样的。
     
    修改了limits.conf需要重启系统?
    这个说法非常搞笑,修改了limits.conf,重新登录进来就生效了。在机器上试试就知道了,好多人真的很懒,宁愿到处问也不愿意花一分钟时间实际操作一下。
     

    三 /proc/sys/fs/file-max

    网上说,ulimit -n 和limits.conf里最大文件数设定不能超过/proc/sys/fs/file-max的值,这也是搞笑了,/proc/sys/fs/file-max是系统给出的建议值,系统会计算资源给出一个和合理值,一般内存关系,内存越大,改值越大,但是仅仅是一个建议值,limits.conf的设定完全可以超过/proc/sys/fs/file-max。
    [root@zk203 ~]# cat /proc/sys/fs/file-max
    1610495
    我将limits.conf里文件最大数量设定为1610496,保存后,打印出来:
    [root@zk203 ~]# cat /etc/security/limits.conf
    root soft nofile1610496
    root hard nofile1610496
     

    四�0�2 总结一下

    • /proc/sys/fs/file-max限制不了/etc/security/limits.conf
    • 只有root用户才有权限修改/etc/security/limits.conf
    • 对于非root用户,/etc/security/limits.conf会限制ulimit -n,但是限制不了root用户
    • 对于非root用户,ulimit -n只能越设置越小,root用户则无限制
    • 任何用户对ulimit -n的修改只在当前环境有效,退出后失效,重新登录新来后,ulimit -n由limits.conf决定
    • 如果limits.conf没有做设定,则默认值是1024
    • 当前环境的用户所有进程能打开的最大问价数量由ulimit -n决定
  • 相关阅读:
    HTML 5 使用 FileReader、FormData实现文件上传
    【JS深入学习】——事件代理/事件委托
    【JS深入学习】——函数创建和重载
    Yii
    YII简单的基于角色的访问控制
    怎样在Yii中显示静态页
    Yii framework 应用总结小窍门(转)
    Yii PHP 框架分析(四)
    Yii PHP 框架分析(三)
    Yii PHP 框架分析(二)
  • 原文地址:https://www.cnblogs.com/lemon-flm/p/8093684.html
Copyright © 2011-2022 走看看