ubuntu - 如何增加在 Ubuntu 上运行的 Asterisk 的打开文件描述符
问题描述
我遇到了这个,我发现只有一篇关于这个的帖子有修复,但不是那么清楚,而且已经有几年了。
Ubuntu 20.04 星号 16.9
错误信息:
[Jul 20 21:37:16] WARNING[1742] alertpipe.c: Failed to create alert pipe with eventfd(), falling back to pipe(): Too many open files
[Jul 20 21:37:16] WARNING[1742] alertpipe.c: Failed to create alert pipe: Too many open files
星号 PID:1130
检查进程的限制。最大打开文件软限制为 1024
root@trueringless-asterisk:/home/esundberg# cat /proc/1130/limits
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 64057 64057 processes
Max open files 1024 4096 files
Max locked memory 16777216 16777216 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 64057 64057 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
编辑 /etc/asterisk/asterisk.conf
[options]
maxfiles = 4096 ; Maximum amount of openfiles.
停止星号进程
# systemctl stop asterisk
确保星号已停止
# ps -ef | grep asterisk
启动星号进程
# systemctl start asterisk
获取新的星号 PID
# ps -ef | grep asterisk
root 4925* 1 16 05:07 ? 00:00:00 /usr/sbin/asterisk
检查他们现在在 4096 的文件限制的进程
# cat /proc/4925/limits
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 64057 64057 processes
Max open files 4096 4096 files
Max locked memory 16777216 16777216 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 64057 64057 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
解决方案
最简单的解决方案是重写您用于启动星号或 /usr/sbin/safe_asterisk.sh 脚本的 systemd 或 init.d 脚本。
推荐阅读
- java - 用户身份验证失败时的 Spring Security ProviderNotFoundException
- powershell - Powershell AD 语法 - 如果语句正在复制字符串
- php - 包含单引号和双引号的回显字符串以输入值
- textfield - Flutter Web - 文本字段滚动而不是选择长文本
- python - 如何从特定时间开始播放音频文件
- flutter - How can I wrap the height of the ListView.builder with a Container?
- html - R:是否可以将“html 文件”插入 MS Word 文档/MS Powerpoint(Plotly)
- swift - 无法在 swift 中使用 imageView 显示图像
- html - div内的注册表单CSS导航栏
- javascript - 需要将 javascript 值传递为 html 格式的建议,以便我可以显示正确答案的评分屏幕,而不是“document.write”