ubuntu20.04 突破文件数限制

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

1.1 临时修改文件描述符限制
首先,查看当前的文件描述符限制:

ulimit -n

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

ulimit -n 100000

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

1.2 永久修改文件描述符限制
打开 /etc/security/limits.conf 文件:

sudo nano /etc/security/limits.conf

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

* soft nofile 100000
* hard nofile 100000

保存并退出。

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

sudo nano /etc/pam.d/common-session

在文件末尾添加以下行:

session required pam_limits.so

1.4 修改系统级别的文件描述符限制
编辑 /etc/sysctl.conf 文件:

sudo nano /etc/sysctl.conf

添加以下行:

fs.file-max = 200000

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

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

2.1 修改端口范围
编辑 /etc/sysctl.conf 文件:
bash
sudo nano /etc/sysctl.conf
添加或修改以下行,扩大端口范围:

net.ipv4.ip_local_port_range = 1024 65535

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

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

3.1 增加最大 SYN 队列和最大连接数
编辑 /etc/sysctl.conf 文件:

sudo nano /etc/sysctl.conf

添加以下内容:

net.ipv4.tcp_max_syn_backlog = 8192
net.core.somaxconn = 8192

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

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

sudo sysctl -w net.ipv4.tcp_max_tw_buckets=1440000
sudo sysctl -w net.ipv4.tcp_fin_timeout=15

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

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. 检查设置是否生效
    设置完成后,可以检查系统的设置是否生效:
ulimit -n    # 查看文件描述符限制
sysctl net.ipv4.ip_local_port_range   # 查看端口范围
sysctl net.ipv4.tcp_max_syn_backlog   # 查看最大 SYN 队列大小
sysctl net.core.somaxconn            # 查看最大监听连接数
  1. 重启系统或网络服务
    为了确保所有设置生效,最好重启系统,或者至少重启网络服务:
sudo systemctl restart network

总结
通过以上步骤,你可以将 Ubuntu 20.04 系统配置为支持 10 万以上的连接。
主要的调整项包括增加文件描述符限制、修改端口范围、调整 TCP 设置和内核缓冲区。
设置完成后,系统应该能够承载大量的并发连接。


http://www.niftyadmin.cn/n/5868053.html

相关文章

Kafka 消费者组内分区分配策略 以及 管理控制台方案

一、Kafka 消费者组内分区分配策略 Kafka 通过 partition.assignment.strategy 参数控制消费者组内的分区分配策略,以下是主要策略及特点: 1. RangeAssignor(默认策略) partition.assignment.strategyorg.apache.kafka.clients…

9. grafana的bar gauge使用

1. 选择bar gauge 2. 填充数据源 3. 修改 Display 3. 在Field中的设置

Oracle 数据变化量查询

1. DBA_HIST_SEG_STAT可以看出对象的使用趋势,构造如下SQL查询出每个时间段内数据库对象的增长量 select c.SNAP_ID,to_char(c.END_INTERVAL_TIME, yyyy-mm-dd) SNAP_TIME,a.OWNER,a.OBJECT_NAME,a.OBJECT_TYPE,b.DB_BLOCK_CHANGES_DELTAfrom dba_objects a,(selec…

将VsCode变得顺手好用(1

目录 设置中文 配置调试功能 提效和增强相关插件 主题和图标相关插件 设置中文 打开【拓展】 输入【Chinese】 下载完成后重启Vs即可变为中文 配置调试功能 在随便一个位置新建一个文件夹,用于放置调试文件以及你未来写的代码,随便命名但切记不可用中…

Go基于协程池的延迟任务调度器

原理 通过用一个goroutine以及堆来存储要待调度的延迟任务,当达到调度时间后,将其添加到协程池中去执行。 主要是使用了chan、Mutex、atomic及ants协程池来实现。 用途 主要是用于高并发及大量定时任务要处理的情况,如果使用Go协程来实现每…

ELK搭建初入

ELK搭建: 1、安装ElasticSearch (用于存储收集到的日志信息) 解压安装包 tar -xzvf elasticsearch-8.17.2-linux-x86_64.tar.gz 启动es:bin/elasticsearch –d(默认端口号9200) 浏览器输入es地址。出现…

【工欲善其事】2025 年实现听书自由——基于 Kokoro-82M 的开源 TTS 工具 audiblez 本地部署实战

文章目录 2025 年实现听书自由——基于 Kokoro-82M 的开源 TTS 工具 audiblez 本地部署实战1 前言2 本地部署准备工作3 具体安装步骤4 命令行启动测试5 GUI 界面启动测试6 相关资源一站式下载 2025 年实现听书自由——基于 Kokoro-82M 的开源 TTS 工具 audiblez 本地部署实战 …

【Pandas】pandas Series add_suffix

Pandas2.2 Series Computations descriptive stats 方法描述Series.align(other[, join, axis, level, …])用于将两个 Series 对齐,使其具有相同的索引Series.case_when(caselist)用于根据条件列表对 Series 中的元素进行条件判断并返回相应的值Series.drop([lab…