Linux最大文件打开数的正确修改姿势
2017-02-07 16:21
357 查看
原贴地址:
https://segmentfault.com/a/1190000006880817
前几天查看heka日志的错误日志的时候,发现报错信息 too many open files,很明显打开文件数过多了。
第一个问题来了,如何查看当前进程打开的文件数和最大打开文件数呢?
当前进程打开文件数
当前进程最大打开文件数
可以看到如下所示的输出:
当前系统最大打开文件数
第二个问题是我该如何修改进程的最大文件打开数呢?
找到最大文件打开数的设置方法,这个问题也就解决了,通常有下面几种修改方式:
1)
2)
配置的具体含义,大家自行搜索。
3)修改shell的启动项,将
到此为止,配置好了,你通过
ok,那就重启吧,重启完毕,结果发现依然没变!这奇了怪了,后来经过好久的排查,最终确认问题是,该程序是通过
salt-minion 重启。
当大家遇到limits修改不生效的时候,请查一下进程是否只是子进程,如果是,那就要把父进程也一并重启才可以。
https://segmentfault.com/a/1190000006880817
前几天查看heka日志的错误日志的时候,发现报错信息 too many open files,很明显打开文件数过多了。
第一个问题来了,如何查看当前进程打开的文件数和最大打开文件数呢?
当前进程打开文件数
ls /proc/[pid]/fd|wc -l
当前进程最大打开文件数
cat /proc/[pid]/limits|grep open
可以看到如下所示的输出:
Max open files 1024 4096 files
当前系统最大打开文件数
ulimit -n
第二个问题是我该如何修改进程的最大文件打开数呢?
找到最大文件打开数的设置方法,这个问题也就解决了,通常有下面几种修改方式:
1)
ulimit -n 102400直接使用ulimit命令修改,但这个只会对当前会话生效,终端关闭后,设置丢失。
2)
/etc/security/limitd.conf文件中增加limits的配置,一般如下:
* soft nofile 102400
配置的具体含义,大家自行搜索。
/etc/security/limitd.conf在每一个会话创建时都会加载,所以修改这里是一个使配置长期生效的方法。
3)修改shell的启动项,将
ulimit -n 102400放进去,每次创建会话时也会加载。一般是
/etc/profile文件,或者
/etc/profile.d/limits.sh中。
到此为止,配置好了,你通过
ulimit -n查看系统的最大文件打开数已经生效了。但此时查看进程的最大文件打开数没有变,原因是这个值是在进程启动的时候设定的,要生效必须重启!
ok,那就重启吧,重启完毕,结果发现依然没变!这奇了怪了,后来经过好久的排查,最终确认问题是,该程序是通过
supervisord来管理的,也就是这进程都是
supervisord的子进程,而
supervisord的最大文件打开数还是老的配置,此时必须重启
supervisord才可以。后来在saltstack上也遇到了同样的问题,必须把所有的
salt-minion 重启。
当大家遇到limits修改不生效的时候,请查一下进程是否只是子进程,如果是,那就要把父进程也一并重启才可以。
相关文章推荐
- linux修改打开文件最大数两种方法
- linux修改最大文件打开、句柄数
- linux下进程的进程最大数、最大线程数、进程打开的文件数和ulimit命令修改硬件资源限制
- Linux修改用户最大线程数目和最大打开文件数目等
- 修改Linux系统最大打开文件数
- linux修改文件打开最大数(ulimit命令)
- 修改linux系统的最大打开文件数
- Linux 下应用程序最大打开文件数的理解和修改【转】
- 修改linux打开文件最大数与最大线程数
- 修改linux文件最大进程数和文件打开数
- 修改linux用户的可以打开的最大文件数和进程数(fork: retry: Resource temporarily unavailable)
- linux--参数修改--修改最大文件打开书
- linux下进程的进程最大数、最大线程数、进程打开的文件数和ulimit命令修改硬件资源限制
- 修改linux最大打开文件数
- 修改linux系统的最大打开文件数
- linux的最大打开文件数限制修改方法
- 修改linux系统用户最大线程及打开文件线程数限制
- Linux最大文件打开数查看和修改
- linux修改文件打开最大数
- Linux 下应用程序最大打开文件数的理解和修改