ubuntu20.04 突破文件数限制

  1. 增加文件描述符的限制
    每个网络连接都占用一个文件描述符。增加文件描述符的数量,可以让系统处理更多的并发连接。

1.1 临时修改文件描述符限制

首先,查看当前的文件描述符限制:

bash 复制代码
ulimit -n

然后,将文件描述符限制增大,例如:

bash 复制代码
ulimit -n 100000

这种方法是临时的,仅对当前会话有效。如果你希望永久更改限制,需要修改系统配置文件。

1.2 永久修改文件描述符限制

打开 /etc/security/limits.conf 文件:

bash 复制代码
sudo nano /etc/security/limits.conf

在文件末尾添加以下内容:

plaintext 复制代码
* soft nofile 100000
* hard nofile 100000

保存并退出。

1.3 配置 PAM 支持

确保 PAM 配置文件允许文件描述符的增加。编辑 /etc/pam.d/common-session 文件:

bash 复制代码
sudo nano /etc/pam.d/common-session

在文件末尾添加以下行:

plaintext 复制代码
session required pam_limits.so

1.4 修改系统级别的文件描述符限制

编辑 /etc/sysctl.conf 文件:

bash 复制代码
sudo nano /etc/sysctl.conf

添加以下行:

plaintext 复制代码
fs.file-max = 200000

保存并关闭文件,然后应用更改:

bash 复制代码
sudo sysctl -p
  1. 调整端口范围
    操作系统为每个新的网络连接分配一个端口,默认情况下端口范围为 1024 到 65535。你可以扩大这个范围,以便系统能提供更多的可用端口。

2.1 修改端口范围

编辑 /etc/sysctl.conf 文件:

bash

sudo nano /etc/sysctl.conf

添加或修改以下行,扩大端口范围:

plaintext 复制代码
net.ipv4.ip_local_port_range = 1024 65535

保存并关闭文件,然后应用更改:

bash 复制代码
sudo sysctl -p
  1. 优化 TCP 设置
    为了支持更多的连接,调整一些内核参数来优化 TCP 设置。

3.1 增加最大 SYN 队列和最大连接数

编辑 /etc/sysctl.conf 文件:

bash 复制代码
sudo nano /etc/sysctl.conf

添加以下内容:

plaintext 复制代码
net.ipv4.tcp_max_syn_backlog = 8192
net.core.somaxconn = 8192

这会增加系统可以接受的 TCP 同步连接请求的最大数量,以及增加监听队列的大小。

3.2 增加 TCP 连接的最大数目

可以增加系统中 TCP 连接的最大数量,减少连接被丢弃的可能:

bash 复制代码
sudo sysctl -w net.ipv4.tcp_max_tw_buckets=1440000
sudo sysctl -w net.ipv4.tcp_fin_timeout=15

3.3 调整内核的网络缓冲区大小

为提高网络吞吐量,可以增大内核缓冲区大小:

bash 复制代码
sudo sysctl -w net.core.rmem_max=16777216
sudo sysctl -w net.core.wmem_max=16777216
sudo sysctl -w net.ipv4.tcp_rmem="4096 87380 16777216"
sudo sysctl -w net.ipv4.tcp_wmem="4096 65536 16777216"
  1. 检查设置是否生效
    设置完成后,可以检查系统的设置是否生效:
bash 复制代码
ulimit -n    # 查看文件描述符限制
sysctl net.ipv4.ip_local_port_range   # 查看端口范围
sysctl net.ipv4.tcp_max_syn_backlog   # 查看最大 SYN 队列大小
sysctl net.core.somaxconn            # 查看最大监听连接数
  1. 重启系统或网络服务
    为了确保所有设置生效,最好重启系统,或者至少重启网络服务:
bash 复制代码
sudo systemctl restart network

总结

通过以上步骤,你可以将 Ubuntu 20.04 系统配置为支持 10 万以上的连接。

主要的调整项包括增加文件描述符限制、修改端口范围、调整 TCP 设置和内核缓冲区。

设置完成后,系统应该能够承载大量的并发连接。

相关推荐
Knight_AL3 分钟前
如何在 MySQL 中优雅统计“只算周一到周五”的到访数据?
数据库·mysql
咸蛋Superman5 分钟前
车联网时序数据库靠谱的供应商是哪家
数据库·时序数据库
weixin_462446236 分钟前
一键修复 Redis + OpenVAS 权限和启动问题
数据库·redis·bootstrap
唯创知音9 分钟前
WT2605A录音方案实现高保真音频采集本地存储云端同步!
网络·音视频·录音芯片·录音方案·录音上传
阿巴阿巴boer11 分钟前
用wsl搭建远程linux服务器
linux·运维·服务器·ssh
@CLoudbays_Martin1114 分钟前
什么是IP黑洞?
网络·网络协议·tcp/ip
qqssss121dfd18 分钟前
计算机网络(第8版,谢希仁)第三章习题解答
网络·计算机网络·php
咸蛋Superman40 分钟前
靠谱的车联网时序数据库服务商有哪些
数据库·时序数据库
AIHE-TECH1 小时前
多台西门子PLC控制器与SQL数据库对接(带边缘计算)的案例
数据库·sql·mysql·边缘计算·达梦数据库·西门子plc·智能网关
乘风!1 小时前
NSSM启动tomcat部署Java程序
java·服务器·后端·tomcat