帮助文档
专业提供香港服务器、香港云服务器、香港高防服务器租用、香港云主机、台湾服务器、美国服务器、美国云服务器vps租用、韩国高防服务器租用、新加坡服务器、日本服务器租用 一站式全球网络解决方案提供商!专业运营维护IDC数据中心,提供高质量的服务器托管,服务器机房租用,服务器机柜租用,IDC机房机柜租用等服务,稳定、安全、高性能的云端计算服务,实时满足您的多样性业务需求。 香港大带宽稳定可靠,高级工程师提供基于服务器硬件、操作系统、网络、应用环境、安全的免费技术支持。
服务器资讯 / 香港服务器租用 / 香港VPS租用 / 香港云服务器 / 美国服务器租用 / 台湾服务器租用 / 日本服务器租用 / 官方公告 / 帮助文档
too many open files(打开的文件过多)解决方法
发布时间:2024-02-27 21:58:51   分类:帮助文档
too many open files(打开的文件过多)解决方法 https://www.cnblogs.com/conanwang/p/5818441.html SU: failed to execute /bin/bash:系统中打开的文件过多 一、产生原因 too many open files(打开的文件过多)是Linux系统中常见的错误,从字面意思上看就是说程序打开的文件数过多,不过这里的files不单是文件的意思,也包括打开的通讯链接(比如socket),正在监听的端口等等,所以有时候也可以叫做句柄(handle),这个错误通常也可以叫做句柄数超出系统限制。 引起的原因就是进程在某个时刻打开了超过系统限制的文件数量以及通讯链接数,通过命令ulimit -a可以查看当前系统设置的最大句柄数是多少: [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) 126906 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) 126906 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited open files那一行就代表系统目前允许单个进程打开的最大句柄数,这里是1024。 使用命令lsof -p 进程id可以查看单个进程所有打开的文件详情,使用命令lsof -p 进程id | wc -l可以统计进程打开了多少文件: [tomcat@localhost bin]$ jps 3092 Bootstrap 3197 Jps [tomcat@localhost bin]$ lsof -p 3092 | wc -l 108 以裸启动的tomcat为例,可以看到它目前打开了108个文件数,如果文件数过多使用lsof -p 进程id命令无法完全查看的话,可以使用lsof -p 进程id > openfiles.log将执行结果内容输出到日志文件中查看。 二、解决方法 1、增大允许打开的文件数——命令方式 ulimit -HSn 102400 //这只是在当前终端有效,退出之后,open files又变为默认值。当然也可以写到/etc/profile中,因为每次登录终端时,都会自动执行/etc/profile ulimit -HSn 102400 临时终端生效,切换终端失败 [root@localhost 20221108]# 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) 126906 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) 126906 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited [root@localhost 20221108]# [root@localhost 20221108]# ulimit -HSn 102400 [root@localhost 20221108]# [root@localhost 20221108]# 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) 126906 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 102400 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) 126906 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited 2、增大允许打开的文件数——修改系统配置文件 2.1.修改file-max /proc/sys/fs/file-max中指定了系统范围内所有进程可打开的文件句柄的数量限制 # echo 6553560 > /proc/sys/fs/file-max //sysctl -w "fs.file-max=34166",前面2种重启机器后会恢复为默认值 或 # vim /etc/sysctl.conf, 加入以下内容,重启生效 fs.file-max = 6553560 fs.file-max = 6815744 fs.file-max指系统能够打开最大的文件句柄数 建议设置:fs.file-max=512processes=6.51024*1024=6.5MOracle系统内核参数、资源限制及ipcs相关命令总结 2.2.修改ulimit的open file,系统默认的ulimit对文件打开数量的限制是1024 # vim /etc/security/limits.conf //加入以下配置,重启即可生效 #在最后加入 * soft nofile 65535 * hard nofile 65535 或者只加入 * - nofile 8192 最前的 * 表示所有用户,可根据需要设置某一用户,例如 roy soft nofile 8192 roy hard nofile 8192 注意”nofile”项有两个可能的限制措施。就是项下的hard和soft。 要使修改过得最大打开文件数生效,必须对这两种限制进行设定。 如果使用”-“字符设定, 则hard和soft设定会同时被设定。 3、检查程序问题 如果你对你的程序有一定的解的话,应该对程序打开文件数(链接数)上限有一定的估算,如果感觉数字异常,请使用第一步的lsof -p 进程id > openfiles.log命令,获得当前占用句柄的全部详情进行分析, 1)打开的这些文件是不是都是必要的? 2)定位到打开这些文件的代码 3)是否程序操作了文件写入,但是没有进行正常关闭 4)是否程序进行了通讯,但是没有正常关闭(也就是没有超时结束的机制) 如果程序中存在这些问题的话,无论系统句柄数设置的多么大,随着时间的推移,也一定会占用完。 附录: 附录1. 为了让一个程序的open files数目扩大,可以在启动脚本前面加上ulimit -HSn 102400命令。但当程序是一个daemon时,可能这种方法无效,因为没有终端。 附录2. 如果某项服务已经启动,再动态调整ulimit是无效的,特别是涉及到线上业务就更麻烦了。 这时,可以考虑通过修改/proc/’程序pid’/limits来实现动态修改!!!
香港云服务器租用推荐
服务器租用资讯
·广东云服务有限公司怎么样
·广东云服务器怎么样
·广东锐讯网络有限公司怎么样
·广东佛山的蜗牛怎么那么大
·广东单位电话主机号怎么填写
·管家婆 花生壳怎么用
·官网域名过期要怎么办
·官网邮箱一般怎么命名
·官网网站被篡改怎么办
服务器租用推荐
·美国服务器租用
·台湾服务器租用
·香港云服务器租用
·香港裸金属服务器
·香港高防服务器租用
·香港服务器租用特价