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
前一篇博客中已经说过Golang对Gzip的处理,其实这是我的服务器端的处理,那么当我们服务器返回Gzip压缩的字符串后,客户端如何进行解压呢?本文主要记录下JavaScript对Gzip进行压缩和解压处理。
速查表是自己整理了一份在工作中常用的一些资料,包含了自己在日常开发中需要常常用到的相关技术。可以给读者进行参考。
Tauri 是一个框架,用于为所有主要桌面平台构建小巧、快速的二进制文件。开发人员可以集成任何可编译为 HTML、JS 和 CSS 的前端框架,以构建他们的用户界面。应用程序的后端是一个基于 Rust 的二进制文件,带有一个前端可以与之交互的 API。
Tauri 应用程序的用户界面目前在 macOS 和 Windows 上利用 tao 作为窗口处理库,在 Linux 上通过 Tauri 团队孵化和维护的 WRY 利用 WebKit、Windows 上的 WebView2 和 Linux 上的 WebKitGTK 创建一个统一的系统 webview(和其他好东西,如菜单和任务栏)接口。
最近关注流媒体服务器来做网络直播,本想使用阿里云的流媒体服务器,由于费用的问题还是想能否自己搭建一个流媒体服务器供自己测试使用。果不其然,Nginx居然如此强大,可以用来做流媒体服务器。本文将具体介绍流媒体服务器的搭建过程和使用过程。
vmstat是Virtual Memory Statistics(虚拟内存统计)的缩写,利用该命令可以对操作系统的内存信息、进程状态和CPU活动等进行监视。但是只能对系统的整理情况进行统计,无法对某个进程进行深入的分析。
快速生成表格
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问题