前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >EasyCVR/EasyGBS程序运行为什么会出现too many open files?

EasyCVR/EasyGBS程序运行为什么会出现too many open files?

原创
作者头像
TSINGSEE青犀视频
发布2021-11-30 10:16:59
3960
发布2021-11-30 10:16:59
举报
文章被收录于专栏:TSINGSEE青犀视频

在现场 EasyCVR/EasyGBS 使用过程中,在接入大量设备后,程序运行会显示 too many open files。于是我们在 shell 中运行 ulimit –n 10240,可以成功,但是以服务运行,仍然是 too many open files。因此对 Linux 的 ulimit 进行针对性研究,解决该问题。

一、ulimit 命令

ulimit 用于 shell 启动进程所占用的资源。

查看系统限制数量 ulimit –n 查看系统显示数量(更详细) ulimit –a 设置系统显示数量 ulimit –n 1024 设置 open files 1024 查看 2056 进程的限制 cat /proc/2056/limits

查看某个进程打开的文件数 lsof -p 2056 | wc –l lsof -e /run/user/1000/gvfs -p 2056 | wc –l 查看进程打开的文件信息 lsof -c easydss lsof |wc -l cat /proc/15386/limits 1024-4096 go

全局设置 ulimit 数据

二、Soft Limit 和 Hard Limit 的区别

ulimit –n 默认查看的是软限制 ulimit –Hn 查看的是硬限制 ulimit –Sn 查看的是软限制 ulimit -n 的最大值是 $((2**20)) 也就是最大 1048576 多加个 1 都会报错 nofile 的 hard 绝对不允许超过 1048576,soft 随意,大不了最大1048576

三、服务和进程 ulimit 的区别

默认的软限制为 1024,硬限制为 4096 首先设置 ulimit –n 3000 以进程运行程序 ./tsingsee, 最终查看进程占用的 ulimit 进程为 5210 cat /proc/5210/limits

进程的最大连接数已经增加,为 3000 修改以服务运行,查看对应的 ulimit,仍然未 1024 4096

为什么以服务运行,ulimit 限制仍然为默认值?继续探索。 运行 cat /proc/5673/status 查看进程的状态,发现父进程的 pid 为 1:

查看对应的父进程为 systemd

以进程运行,pid为6943,查看对应的 6943 的父进程为 4286,查看 4286 的进程

结论: 服务的 ulimit 限制和进程的 ulimit 限制不是同一个地方设置的。 ulimit –n 1000 是临时设置 shell 的大小,网上的设置 /etc/security/limits.conf 中的 ulimit 大小,也是不会设置到服务程序中。

四、如何设置服务的 ulimit

CentOS 的服务是 systemd 程序启动的,其他操作系统是以另外的程序启动的。针对 CentOS 的配置如下: 有的操作系统是以 SysVinit 的方式启动服务的,对应的 ulimit 设置不同,需要针对性的探索。 以内核作为示范。首先内核安装的服务名为 TsingseeMediaServer 在 CentOS 为例,首先进入服务路径 /etc/system/system 里面会有一个 TsingseeMediaServer.service

vi TsingseeMediaServer.service 在 Service 选项添加一个一行 LimitNOFILE=5000

查看原始进程对应的 ulimit 限制 cat /proc/4043/limits

目前是 4000 个 ulimit。运行以下命令,让 5000 生效 systemctl daemon-reload 重启 tsingsee 服务,查看对应的进程的 ulimit

以上设置成功后,不会再出现 ulimit 的限制。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、ulimit 命令
  • 二、Soft Limit 和 Hard Limit 的区别
  • 三、服务和进程 ulimit 的区别
  • 四、如何设置服务的 ulimit
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档