Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 380|回复: 0

[默认分类] Linux下TCP最大连接数受限问题

[复制链接]
  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2018-7-10 13:40:05 | 显示全部楼层 |阅读模式

    一、 文件数限制修改
    1、用户级别
    查看Linux系统用户最大打开文件限制:
    # ulimit -n
    1024

    (1) vi /etc/security/limits.conf
    mysql soft nofile 10240
    mysql hard nofile 10240
    其中mysql指定了要修改哪个用户的打开文件数限制。
    可用"*"号表示修改所有用户的限制;soft或hard指定要修改软限制还是硬限制;10240则指定了想要修改的新的限制值,即最大打开文件数(请注意软限制值要小于或等于硬限制)。

    (2) vi /etc/pam.d/login
    session required /lib/security/pam_limits.so
    这是告诉Linux在用户完成系统登录后,应该调用pam_limits.so模块来设置系统对该用户可使用的各种资源数量的最大限制(包括用户可打开的最大文件数限制)。
    而pam_limits.so模块就会从/etc/security/limits.conf文件中读取配置来设置这些限制值。

    2、Linux系统级别
    查看Linux系统对同时打开文件数的硬限制:
    # sysctl -a|grep file-max
    fs.file-max = 65535
    这表明这台Linux系统最多允许同时打开(即包含所有用户打开文件数总和)65535个文件,是Linux系统级硬限制,所有用户级的打开文件数限制都不会超过这个数值。
    通常这个系统级硬限制是Linux系统在启动时根据系统硬件资源状况计算出来的最佳的最大同时打开文件数限制。

    (1) vi /etc/sysctl.conf
    fs.file-max = 1000000
    立即生效:
    # sysctl -p

    二、 网络端口限制修改
    查看Linux系统最大追踪TCP连接数量:
    # sysctl -a | grep ipv4.ip_conntrack_max
    net.ipv4.ip_conntrack_max = 20000
    这表明系统将对最大跟踪的TCP连接数限制默认为20000。

    查看Linux系统端口范围:
    # sysctl -a | grep ipv4.ip_local_port_range
    net.ipv4.ip_local_port_range = 1024 30000
    注意:
    每个TCP客户端连接都要占用一个唯一的本地端口号(此端口号在系统的本地端口号范围限制中),如果现有的TCP客户端连接已将所有的本地端口号占满。将不能创建新的TCP连接。

    (1) vi /etc/sysctl.conf
    net.ipv4.ip_local_port_range = 1024    65535
    net.ipv4.ip_conntrack_max = 20000
    如果按上述端口范围进行设置,则理论上单独一个进程最多可以同时建立60000多个TCP客户端连接。
    如果按上述参数进行设置,则理论上单独一个进程最多可以同时建立20000多个TCP客户端连接。


    备注:
    对mysql用户可同时打开文件数设置为10240个;
    将Linux系统可同时打开文件数设置为1000000个(一定要大于对用户的同时打开文件数限制);
    将Linux系统对最大追踪的TCP连接数限制为20000个(但是,建议设置为10240;因为对mysql用户的同时打开文件数已经限制在10240个;且较小的值可以节省内存);
    将linux系统端口范围配置为1024~30000(可以支持60000个以上连接,不建议修改;默认已经支持20000个以上连接);

    综合上述四点,TCP连接数限制在10140个。
    这10240个文件中还得除去每个进程必然打开的标准输入,标准输出,标准错误,服务器监听 socket,进程间通讯的unix域socket等文件。



    因此,当需要对TCP连接数进行调整时只需要调整ulimit参数。


    Linux下查看tcp连接数及状态命令:

    netstat -n | awk "/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}"




    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-3-29 19:48 , Processed in 0.347738 second(s), 38 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表