-
2020-10-30 10:29:25
说明:主流操作系统的设计是将TCP/UDP连接采用与文件一样的方式去管理,即一个连接对应一个fd。主流的linux服务器默认支持的最大fd数量为1024,可以通过ulimit -a命令查看 open files字段。当连接数大很容易应为fd不足而出现“open too many files”的错误,导致无法建立新的连接。调整方法为永久修改方法
- 修改文件:/etc/security/limits.conf,在文件中添加
#限制单个进程最大文件句柄数(到达此限制时系统报警) * soft nofile 65536 #限制单个进程最大文件句柄数(到达此限制时系统报错) * hard nofile 65536
- 修改文件:/etc/sysctl.conf, 在文件中添加:
#限制整个系统最大文件句柄数 fs.file-max=655350
- sysctl -p 使配置生效
- 退出当前用户,重新登录
更多相关内容 -
linux文件句柄数超出系统限制怎么办?
2021-05-13 02:11:19不过这里的files不单是文件的意思,也包括打开的通讯链接(比如socket),正在监听的端口等等,所以有时候也可以叫做句柄(handle),这个错误通常也可以叫做句柄数超出系统限制。2、产生的原因:经常在使用linux的时候...1、问题阐述:
too many open files:顾名思义即打开过多文件数。
不过这里的files不单是文件的意思,也包括打开的通讯链接(比如socket),正在监听的端口等等,所以有时候也可以叫做句柄(handle),这个错误通常也可以叫做句柄数超出系统限制。
2、产生的原因:
经常在使用linux的时候出现,大多数情况是由于程序没有正常关闭一些资源引起的,所以出现这种情况,请检查io读写,socket通讯等是否正常关闭。
3、经典案例:
很多项目上线不久运行了一段时间后,服务突然宕了,经检查日志,出现了too many open files 错误。
4、解决方案:
其实Linux是有文件句柄限制的,而且默认不是很高,一般都是1024,作为一台生产服务器,其实很容易就达到 这个数量,因此我们需要把这个值改大一些。我们可以用ulimit -n 来查看当前用户句柄数限制。那么这个1024是系统的限制,还是用户的限制呢。其实,这个是用户限制来的,完整的说法,应该是当前用户准备要运行的程序的限制。
这个限制是针对单个程序的限制
这个限制不会改变之前已经运行了的程序的限制
对这个值的修改,退出了当前的shell就会消失
因此出现这种问题有两种解决方式:
第一:增大文件句柄数。这种方式能及时解决问题,但是不能够彻底的解决问题,可以为彻底解决问题提供一定的时间保证。那么如何增大文件句柄数数呢?
如修改文件句柄数为65535,ulimit -n 65535.此时系统的文件句柄数为65535.
2)将ulimit 值添加到/etc/profile文件中(适用于有root权限登录的系统)
为了每次系统重新启动时,都可以获取更大的ulimit值,将ulimit 加入到/etc/profile 文件底部。
echo ulimit -n 65535 >>/etc/profile
source /etc/profile #加载修改后的profile
ulimit -n #显示65535,修改完毕!
到此为止,你以为大功告成了么,其实不然,突然发现自己再次登录进来的时候,ulimit的值还是1024,这是为什么呢? 用户登录的时候执行sh脚本的顺序:
/etc/profile.d/file
/etc/profile
/etc/bashrc
/mingjie/.bashrc
/mingjie/.bash_profile
由于ulimit -n的脚本命令加载在第二部分,用户登录时由于权限原因在第二步还不能完成ulimit的修改,所以ulimit的值还是系统默认的1024。所以想彻底改变这种问题,就必须做如下操作:修改/etc/security/limits.conf
里面有很详细的注释,比如
* soft nofile 2048
* hard nofile 32768
就可以将文件句柄限制统一改成软2048,硬32768
那么什么是软限制,什么是硬限制 ?
硬限制是实际的限制,而软限制,是warnning限制,只会做出warning
这样就实际地增大了文件句柄数。
第二:分析句柄数,查找原因,这是解决问题最根本的办法。那么如何分析那,就需要用到lsof这个命令了(关于这个命令大家可以在网上学习学习)。
(1)统计各进程打开句柄数:lsof -n|awk ''|sort|uniq -c|sort -nr
(2)统计各用户打开句柄数:lsof -n|awk ''|sort|uniq -c|sort -nr
(3)统计各命令打开句柄数:lsof -n|awk ''|sort|uniq -c|sort -nr
-
Linux下查看进程打开的文件句柄数和如何修改方法
2021-01-11 03:19:26修改文件句柄数在Linux下,我们使用ulimit -n 命令可以看到单个进程能够打开的最大文件句柄数量(socket连接也算在里面)。系统默认值1024。 对于一般的应用来说(象Apache、系统进程)1024完全足够使用。但是如何象... -
【运维笔记】linux最大文件句柄数
2020-06-09 11:59:46在linux服务器大并发调优时,其修改linux最大文件句柄数是最常修改的参数之一 目前:阿里云服务器默认为:open files (-n) 65535 [root@iZbp16qstyvxjc2nlzquvpZ ~]# ulimit -a core file size (blocks, -c) 0 data ...在linux服务器大并发调优时,其修改linux最大文件句柄数是最常修改的参数之一
目前:阿里云服务器默认为:open files (-n) 65535
[root@iZbp16qstyvxjc2nlzquvpZ ~]# ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 63457 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 65535 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 63457 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
亚马逊服务器默认为open files: (-n) 1024
[root@localhost ~]# ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 39188 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 655350 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
备注:
- 默认情况下,linux最大文件句柄数为1024个。
- 当你的服务器在大并发达到极限时,就会报出 "
Too many open files
"
执行下面命令即可修改最大句柄数为655350:
[root@demo /root]#ulimit -n 655350
但是,这种方法只针对当前进程有效。重新打开一个shell或者开启一个进程,你就会发现参数还是
ulimit -n xx修改之前的数字。另一种方法就是修改linux系统参数。
vi /etc/security/limits.conf
添加:# End of file # -----------分割线,上面是配置文件的模板,下面是自己添加的------------------------ * soft nofile 655350 #表示任何一个用户可以打开的最大的文件描述符数量 * hard nofile 655350 * soft nproc 655350 #表示任何一个用户可以打开的最大的进程数 * hard nproc 655350 @student hard nofile 65535 #student组中的任何人最多能打开文件描述符数量是65535,并且会在打开65000个时发出警告 @student soft nofile 65000 "/etc/security/limits.conf" 70L, 3225C
修改以后保存,注销当前用户,重新登录,执行ulimit -a ,ok ,参数生效了:
[root@localhost ~]# ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 39182 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 655350 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 655350 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited [root@localhost ~]#
参考文献:
linux最大文件句柄数:https://jinjiajin.net/101.html
注:以上内容仅提供参考和交流,请勿用于商业用途,如有侵权联系本人删除!
持续更新中…
如有对思路不清晰或有更好的解决思路,欢迎与本人交流,微信:seesun2012(
非紧急项目请加QQ群解答
),QQ群:273557553
你遇到的问题是小编创作灵感的来源!
-
修改linux最大文件句柄数
2018-05-15 12:47:10修改linux最大文件句柄数2016年04月18日 16:18:41阅读数:683转自 http://www.cnblogs.com/likehua/p/3831331.html大家知道在linux服务器大并发调优时,往往需要预先调优linux参数,其中修改linux最大文件句柄数是...修改linux最大文件句柄数
转自 http://www.cnblogs.com/likehua/p/3831331.html
大家知道在linux服务器大并发调优时,往往需要预先调优linux参数,其中修改linux最大文件句柄数是最常修改的参数之一。
在linux中执行ulimit -a 即可查询linux相关的参数,如下所示:
[root@mongodb11 ~]# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 256324
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 256324
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited默认情况下,linux最大文件句柄数为1024个。当你的服务器在大并发达到极限时,就会报出“too many open files”。
那么如何修改linux最大文件句柄数呢?其实很简单:
1、ulimit -n 2048
这命令就可以修改linux最大文件句柄数,修改以后使用ulimit -a 查看修改的状态,如:
[root@mongodb11 ~]# ulimit -n 2048
[root@mongodb11 ~]# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 256324
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 2048
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 256324
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited但是,这种方法只针对当前进程有效。重新打开一个shell或者开启一个进程,你就会发现参数还是ulimit -n xx修改之前的数字。那么有没有一劳永逸的方法呢?
当然有!那就是修改系统参数。
2、修改linux系统参数。vi /etc/security/limits.conf 添加
* soft nofile 65536
* hard nofile 65536
修改以后保存,注销当前用户,重新登录,执行ulimit -a ,ok ,参数生效了:
[root@localhost ~]# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 256600
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 65536
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 256600
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimitedLinux 句柄限制分为1系统级限制和2用户级限制:
1 系统级限制
1.1 /proc/sys/fs/nr_open
系统文件系统支持文件句柄总数上限, 默认值1048576 (1M). 该值上限受限于系统内存. 这个是所有限制的最大值.
1.2 /proc/sys/fs/file-max
系统文件系统支持文件句柄总数最大值, 必须小于 nr_open. 查看命令(下面3个命令等效):
123456[root
@vm
-cdh4 ~]# sysctl -a | grep -i file-max --color
fs.file-max =
188436
[root
@vm
-cdh4 ~]# cat /proc/sys/fs/file-max
188436
[root
@vm
-cdh4 ~]# sysctl -e fs.file-max
fs.file-max =
188436
用户级限制
限制进程句柄数可能导致服务器OOM.如异步Q消息中OOM。2.1 硬上限 ulimit -Hn
单个进程句柄数硬上限. <= file-max. 查看命令:
12[root
@vm
-cdh4 ~]# ulimit -Hn
4096
123[root
@vm
-cdh4 ~]# ulimit -Hn
8192
[root
@vm
-cdh4 ~]# ulimit -Hn
8192
2.2 软上限 ulimit -Sn
单个进程句柄数软上限, <= ulimit -Hn. 查看命令:
1234[root
@vm
-cdh4 ~]# ulimit -Sn
1024
[root
@vm
-cdh4 ~]# ulimit -n
1024
临时更改, 重启后消失 :123[root
@vm
-cdh4 ~]# ulimit -Sn
8000
[root
@vm
-cdh4 ~]# ulimit -n
8000
2.3 修改单个进程句柄数上限
同时临时修改软硬上限(<=file-max)重启后消失:
1[root
@vm
-cdh4 ~]# ulimit-SHn
10240
永久修改软硬上限(RHEL6.4), 在 /etc/security/limits.conf 里设置(* 表示对所有用户):
1234567#......
#
@student
- maxlogins
4
* hard nofile
10240
* soft nofile
10240
# End of file
-
请问如何修改文件最大句柄数?
2021-08-10 04:06:06参考回答:linux默认最大文件句柄数是1024个,在linux服务器文件并发量比较大的情况下,系统会报"too many open files"的错误。故在linux服务器高并发调优时,往往需要预先调优Linux参数,修改Linux最大文件句柄数。... -
linux线程数和文件句柄数配置
2021-08-05 15:04:03文章目录进程和文件句柄概念进程数和文件句柄数的查看ulimit 修改进程数和文件句柄数限制持久化修改用户进程数和文件句柄数限制持久化修系统服务进程数和文件句柄数限制linux系统总限制更新 进程和文件句柄概念 一个... -
Linux 修改文件最大句柄数
2020-12-20 00:47:17在linux服务器大并发调优时,往往需要预先调优linux参数,其中修改linux最大文件句柄数是最常修改的参数之一。在linux中执行ulimit -a 即可查询linux相关的参数。[root@SZ~]# ulimit -acore file size (blocks, -c) ... -
操作系统的中打开文件的最大句柄数
2020-06-15 21:11:57如果用户得到的错误消息声明由于打开文件数已经达到了最大值,从而他们不能打开更多文件,则可能需要增加该值。可将这个值设置成有任意多个文件,并且能通过将一个新数字值写入该文件来更改该值。 缺省设置:4096 ... -
Linux 修改最大文件句柄数
2018-04-19 08:45:29为了提升服务器并发访问能力,有时我们需要修改最大支持打开文件的数量, 使用 ulimit 工具将很容易实现这点1. 首先,查看当前能够打开文件的数量# ulimit -a 可以看到,open files 为1024, 而且提示了参数为 -n... -
linux最大文件句柄数量总结
2014-07-25 16:49:16到底最大文件数被什么限制了?too many open files错误到底可以通过什么参数控制?网上的很多文章说的大致步骤是没有错的,大致如下:shell级限制 通过ulimit -n修改,如执行命令ulimit -n 10... -
一个进程能够打开最大文件句柄数设到多大才合适(Linux)
2021-05-13 18:19:56命令可以看到单个进程能够打开的最大文件句柄数量(socket连接也算在里面)。系统默认值1024。对于一般的应用来说(象Apache、系统进程)1024完全足够使用。但是如何象squid、mysql、java等单进程处理大量请求的应用来说... -
linux系统下的用户文件句柄数限制
2021-05-13 08:01:31为什么要修改用户打开的文件数系统默认单个进程可以打开1024个文件,对于一些应用如tomcat、oracle等,运行时经常open成千上万个文件,系统管理员需根据系统上运行的应用需求,修改系统文件数限制值。系统中除了有... -
linux环境下查看修改最大文件句柄数
2020-02-12 16:45:291.查看文件句柄数 ulimit -a 列出结果的 open files 就是当前支持的最大句柄数 2.修改默认设置 执行命令 vim /etc/security/limits.conf 在文件末尾加上 * soft nofile 30000 #超过会报警 * hard nofile 65536 #... -
CentOS7修改单个进程可打开的最大文件句柄数
2020-12-24 07:58:02对于“linux修改单个进程可打开的最大文件句柄数”,在网上搜索了很多教程,基本都说得不全或者已经过时了,经过亲自试验,修改成功,现总结如下:1./etc/security/limits.conf中指定的nofile的值,nofile有上限,... -
进程打开的最大文件句柄数设置
2020-02-09 18:58:44下面是 ulimit命令的一些选项: 查看进程打开文件最大限制 cat /proc/sys/fs/file-max 查看系统级的最大限制 ulimit -n 查看用户级的限制(一般是1024 华为阿里这样的是65535) 查看某个进程已经打开的文件数 修改... -
设置文件句柄
2021-08-14 05:45:21使用以下命令来确定整个系统中文件句柄的最大数量:# cat /proc/sys/fs/file-max32768Oracle 建议将整个系统的文件句柄值至少设置为 65536 。通过直接更改 /proc 文件系统,您可以不必重新启动机... -
linux修改句柄数
2021-01-12 07:58:01linux服务器大并发调优时,往往需要预先调优linux参数,其中修改linux最大文件句柄数是最常修改的参数之一。在linux中执行ulimit -a 即可查询linux相关的参数,如下所示:[root@mongodb11 ~]# ulimit -acore file ... -
【Linux】系统打开文件最大数量限制(进程打开的最大文件句柄数设置)
2020-06-29 11:12:54利用ulimit命令可以对资源的可用性进行控制。 -H选项和-S选项分别表示对给定资源的硬限制(hard limit)和软限制(soft limit)进行设置。...limit的值可以是一个数值,也可以是一些特定的值,比如:hard,so -
修改linux的最大文件句柄数限制
2018-10-12 13:58:25修改linux的最大文件句柄数限制 对于一般的应用来说(象Apache、系统进程)1024完全足够使用。但是如何象squid、mysql、java等单进程处理大量请求的应用来说就有点捉襟见肘了。如果单个进程打开的文件句柄数量超过了... -
修改Linux最大文件句柄数踩过坑
2019-06-26 11:19:51项目需要,修改了linux的最大打开文件描述符,大概超过了200多万,然而注销后就无法登录了。。。 /etc/security/lmits.conf,配置内容如下: * soft nofile 2048000 // 软限制 * hard nofile 2048000 //硬限制 ... -
Linux文件句柄数调整
2018-12-24 23:20:001. Linux系统文件句柄数概念 文件句柄(Windows) 文件描述符(Unix/Linux):file discriptor,fd。对于内核而言,所有打开的文件都是通过文件描述符引用,文件描述符是一个非负整数,变化范围是0~(OPEN_MAX-1)。... -
Linux服务器修改文件句柄数和最大进程数限制
2020-03-10 14:34:19Linux服务器修改文件句柄数和最大进程数限制 1、临时修改的方法: ulimit -HSn 102400 此方法当前会话有效 2、永久修改方法(修改单个进程打开的最大句柄数) 修改vi /etc/security/limits.conf,在后面添加一下内容,... -
Linux系统打开文件最大数量限制(进程打开的最大文件句柄数设置)
2019-02-28 10:08:08查看某个进程已经打开的文件数 修改限制 临时修改 ulimit -HSn 2048 永久修改 vi /etc/security/limits.conf 转载自: https://www.cnblogs.com/cjsblog/p/9367043.html -
linux操作系统中文件句柄数的限制
2020-04-09 11:52:22在生产环境Linux系统中,基本上都需要解除文件句柄数的限制。原因是,Linux的系统默认值为1024,也就是说,一个进程最多可以接受1024个socket连接。这是远远不够的。 文件句柄,也叫文件描述符。在Linux系统中,... -
Linux允许打开最大文件句柄数的参数调优-"too many open files"问题
2018-01-13 16:25:49都知道Linux系统的特性,一切皆文件,所以在运行zabbix这样的服务时,其中重要的一个调优就是调整linux系统的最大文件句柄数,解决“too many open files”的问题,增大程序运行允许打开的文件数,提高性能。... -
Linux之进程数和句柄数
2019-11-14 13:52:30一般情况下,我们需要对文件句柄数、进程数等做一些标准化的配置。 2.进程和句柄的概念 一个程序可能打开多个进程,一个进程在运行中会打开很多资源,如文件file、通讯连接socket、正在监听的端口等,我们都统称为...