百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

高并发/高io下,设置linux下文件打开数限制

ahcoder 2025-03-29 14:38 4 浏览

背景

服务是高并发的密集io型服务,连接数和打开文件数特别高。而在linux中,一切皆文件,所以连接数本身也会表现为文件打开数。默认情况下,linux单进程打开文件数的限制是1024 , 非常低,在密集io型服务里很容易超过。

一般的情况下,我们是根据服务器内存大小,以及单进程使用情况,来多开进程,同时限制单进程打开的文件数。但 dfyun 比较特殊——它是文件打开数特别多(连接数+本地文件打开数+遍历扫描文件操作等等) ,但占用的内存特别小。所以,我不需要根据内存来斟酌打开数值了,直接设置一个非常大的数据即可,让系统不再在文件数上做限制。
下面将直接上代码,放开linux设置,让其不再限制文件打开数。一些代码的细节可以看注释,如果有疑问,可直接上网查找该命令的概念。

操作

# vi /etc/sysctl.conf ,末尾添加
fs.file-max = 655350000
fs.nr_open = 655350000

# 执行命令生效
sysctl -p
# 查看 max-file:
cat /proc/sys/fs/file-max
# 查看当前系统总打开文件数
cat /proc/sys/fs/file-nr
# 输出: 9344 0 592026,
# 分别为:1.已经分配的文件句柄数,2.已经分配但没有使用的文件句柄数,3.最大文件句柄数。
# 修改系统对单个进程打开的文件数限制
ulimit -n 655350000
echo "* soft nofile 655350000" >> /etc/security/limits.conf
echo "* hard nofile 655350000" >> /etc/security/limits.conf
# 顺便附上查看各个进程打开的文件数的命令。显示格式是文件数 + 进程id
lsof -n |awk '{print $2}'|sort|uniq -c|sort -nr|more

# 如果有安装nginx做转发,则还需要设置nginx 
#打开nginx本身的文件数限制
vi /etc/nginx/nginx.conf
# 找到相应位置覆盖修改这个配置
worker_rlimit_nofile 655350000;
events  {
  worker_connections 65535;
}

vi /etc/sysctl.conf 末尾添加tcp连接数相关配置
net.core.somaxconn = 20480
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 4096 16777216
net.ipv4.tcp_wmem = 4096 4096 16777216
net.ipv4.tcp_mem = 786432 2097152 3145728
net.ipv4.tcp_max_syn_backlog = 16384
net.core.netdev_max_backlog = 20000
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_orphans = 131072
net.ipv4.tcp_syncookies = 0
之后执行 sysctl -p 生效

相关推荐

什么是Linux的Snap应用?(linux sln 使用方法)

如果你在使用Ubuntu18.04/20.04LTS版本的Ubuntu系统,会发现系统里面多了一个应用格式包——.snap包。Snap包是Ubuntu16.04LTS发...

俄罗斯联邦税务局拨款17亿用于购买搭载俄国产版本Linux的计算机

据cnews网站11月5日报道,俄罗斯联邦税务局已拨款16.9亿卢布用于购买搭载该国国产版Linux操作系统的计算机——这包括AltSP、AstraLinux、RedOS和CentOS。有关部门...

Linux dpkg命令详解(dpkg -l | grep)

一、简介dpkg是基于Debian发行版Linux系统的低级包管理工具,可以手动安装、配置、移除.deb包,与apt命令不同的是,dpkg不会自动处理包之间的依赖关系。二、常用选项...

从 Windows 7 切换到 Linux 的最简单方法

欢迎来到Windows7的最后一天——也就是微软为这个过时的操作系统提供安全更新的最后一天。虽然你有很多升级Windows7的选项,甚至还有可能将更新延长数年的黑客攻击,但如果你不想升级到...

VMware Workstation 17.0 Pro 发布:新增 TPM 2.0 完美兼容Win11

IT之家11月18日消息,VMwareWorkstation17.0Pro现已发布,它带来了许多新特性,例如微软Windows11硬性要求:虚拟可信平台模块(TPM)2.0。...

虚拟机怎么玩?Android MAC Linux 统统拿下

VMWare虚拟机软件是一个"虚拟PC"软件,它使你可以在一台机器上同时运行二个或更多Windows、DOS、LINUX系统。与"多启动"系统相比,VMWare采用了完全不同的概念。多启动系统在一个时...

Linux正式进入4.0时代(linux 4.0)

胡卷卷o2015/04/1311:58今早,LinusTorvalds在Kernel的GitHubmaster中提交了一个改动,Kernel正式进入4时代。该项目代号为“Hurr...

为什么说linux操作系统要比windows稳定?

正常人说windows的时候是指一整套桌面系统,而说linux的时候是一个命令行+内核。后者从原理上就比前者稳定。如果你日常使用的是linux的发行版桌面系统,看到这话估计直接想骂娘。就我12年的ub...

12 款最佳免费开源 Linux 渲染器 | 火狐浏览器 130.0 版本更新

12款最佳免费开源Linux渲染器Linux的一大优势在于其拥有丰富的开源软件,可以满足艺术家、摄影师、动画师和设计师的需求。凭借价格低廉的硬件、免费的软件以及少量的才能和灵感,任何人都可以创...

开源新闻速递:Linux 4.7 内核发布了第二个 RC 版本

今天关注Linux4.7内核发布了第二个RC版本。被很多Linux发行版都作为默认桌面主题的ArcGTK主题发布了相配合的图标主题ArcIcon,不过目前该图标主题还不够完整,缺少...

Linux Kernel最新稳定版4.4.4版本发布

葛雷格·克罗哈曼(GregKroah-Hartman)于今天正式发布了LinuxKernel最新稳定版--4.4.4版本。尽管官方网站并未更新关于该版本的更新日志,但LinuxKernel4....

Escuelas Linux教育系统4.4版本发布

援引外媒SoftPedia报道,基于Ubuntu系统的EscuelasLinux教育操作系统于4月18日正式上线4.4版本,现已开放下载。EscuelasLinux4.4已经重新基于最新发布的的...

Linux Kernel 4.5系列第4个维护版本发布

LinuxKernel开发者GregKroah-Hartman今天宣布最新稳定和最先进的Linux4.5内核分支迎来第4个维护版本。尽管目前没有太多GNU/Linux操作系统适配LinuxKe...

Linux Kernel 4.5 RC6已开放公测:最终版本3月到来

LinuxKernel4.5RC6已于2月28日开放公测,此外LinusTorvalds也宣布最终版本将于3月到来。他表示,4.5版Linux内核的第6个候选发布版本中整合了一个针对网络驱动头...

Linux Kernel 4.5首个候选版本发布

现在长期支持的Linux4.4内核已经结束,接下来内核开发者将研发重心转移至下个重要版本LinuxKernel4.5。就在几分钟前,LinusTorvalds宣布Linux4.5内核系列的首...