首页 > 解决方案 > 如何增加在 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        

标签: ubuntuasterisk

解决方案


最简单的解决方案是重写您用于启动星号或 /usr/sbin/safe_asterisk.sh 脚本的 systemd 或 init.d 脚本。


推荐阅读