Centos排除too many open files的问题
简介最近在使用Centrifugo的项目的时候,当连接数比较多的是时候,出现了“too many open files”的错误。本文主要记录如何排除和优化该问题。
当出现“too many open files”错误的时候,我们应该先从两个方面进行查找问题;
1、查看系统文件限制
cat /etc/sysctl.conf
查看如下配置是否合理:
fs.file-max = 1000000
2、查看用户级的文件限制
cat /etc/security/limits.conf
查看如下配置是否合理:
* soft nofile 655350 * hard nofile 655350
如果上述两个配置都没有问题,并且比较合理,那么我们还需要查看下进程自身能打开多大的文件数
3、单独获取程序文件数限制
[root@online log]# cat /proc/31804/limits #31804就是进程ID Limit Soft Limit Hard Limit Units Max cpu time unlimited unlimited seconds Max file size unlimited unlimited bytes Max data size unlimited unlimited bytes Max stack size 8388608 unlimited bytes Max core file size 0 unlimited bytes Max resident set unlimited unlimited bytes Max processes 31215 31215 processes Max open files 1024 4096 files Max locked memory 65536 65536 bytes Max address space unlimited unlimited bytes Max file locks unlimited unlimited locks Max pending signals 31215 31215 signals Max msgqueue size 819200 819200 bytes Max nice priority 0 0 Max realtime priority 0 0 Max realtime timeout unlimited unlimited us
从中可以看出,Max open files的文件数为1024,这是为什么呢?然后对系统启动该进程的方式找到了问题,这个进程通过supervisor启动的,所以是否跟supervisor有关呢?然后查看了/etc/supervisord.conf配置文件,里面确实有如下的配置:
minfds=1024 ; min. avail startup file descriptors; default 1024 minprocs=200 ; min. avail process descriptors;default 200
那么我们将这两个配置改成合理的数值。这里我们都修改成了100000;修改完后需要重启supervisor,但是通过如下命令配置文件是不会生效的:
supervisorctl reload
所以我们需要通过如下两条命令来重启supervisor:
supervisorctl shutdown #先停止 supervisord -c /etc/supervisord.conf; #再启动
下面我们再来看下启动的进程的信息:
[root@online log]# cat /proc/6261/limits #这里对应的进程ID已经发生了变化 Limit Soft Limit Hard Limit Units Max cpu time unlimited unlimited seconds Max file size unlimited unlimited bytes Max data size unlimited unlimited bytes Max stack size 8388608 unlimited bytes Max core file size 0 unlimited bytes Max resident set unlimited unlimited bytes Max processes 1000000 1000000 processes Max open files 1000000 1000000 files Max locked memory 65536 65536 bytes Max address space unlimited unlimited bytes Max file locks unlimited unlimited locks Max pending signals 31215 31215 signals Max msgqueue size 819200 819200 bytes Max nice priority 0 0 Max realtime priority 0 0 Max realtime timeout unlimited unlimited us
从上面显示的内容可以看出,Max open files已经修改成功了。
4、统计系统进程打开文件数,并进行从多到少排序
lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more
在使用Git的过程中,不想每次都输入用户名和密码去拉取代码,所以就需要保存这些信息,那么既然有保存了,就必须有清除功能。
PHP中使用Skywalking
ip命令是iproute软件包中的一个强大的网络配置工具,用于显示和管理Linux系统的路由、网络设备、策略路由和隧道。Centos7推荐使用ip命令代替传统的ipconfig和route[该命令我们没有进行说明,需要学习的请参考网上资料]命令。
Flutter的第一个程序“Hello World”
快速生成表格
Electron页面跳转、浏览器打开链接和打开新窗口
Docker编译镜像出现:fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.12/main: temporary error (try again later)
WARNING: Ignoring APKINDEX.2c4ac24e.tar.gz: No such file or directory问题
在Mac电脑中,如何对Git的用户名和密码进行修改呢?起初不懂Mac,所以整了很久,本文将记录如何对这个进行操作,以便后期使用。