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
网页扫描二维码库:Html5-Qrcode,官网地址:https://scanapp.org/html5-qrcode-docs/
Tauri 是一个框架,用于为所有主要桌面平台构建小巧、快速的二进制文件。开发人员可以集成任何可编译为 HTML、JS 和 CSS 的前端框架,以构建他们的用户界面。应用程序的后端是一个基于 Rust 的二进制文件,带有一个前端可以与之交互的 API。
Tauri 应用程序的用户界面目前在 macOS 和 Windows 上利用 tao 作为窗口处理库,在 Linux 上通过 Tauri 团队孵化和维护的 WRY 利用 WebKit、Windows 上的 WebView2 和 Linux 上的 WebKitGTK 创建一个统一的系统 webview(和其他好东西,如菜单和任务栏)接口。
Python调用WPS把文档转换PDF,并把PDF转图片,首先需要安装WPS,然后利用pypiwin32把文档转化成PDF,再利用fitz、PyMuPD把PDF转化成图片
dig命令是用于域名查询,可以用于测试域名系统的工作是否正常。如果没有dig命令,请使用:yum install bind-utils 进行安装
Go-Micro构建学生rpc服务并注册到consul
快速生成表格
Electron页面跳转、浏览器打开链接和打开新窗口
在Mac电脑中,如何对Git的用户名和密码进行修改呢?起初不懂Mac,所以整了很久,本文将记录如何对这个进行操作,以便后期使用。
在使用Git的过程中,不想每次都输入用户名和密码去拉取代码,所以就需要保存这些信息,那么既然有保存了,就必须有清除功能。
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问题