
Debian 8에서 Asterisk 13.11.2에서 열린 파일 제한에 도달하면 충돌이 발생하는 문제에 직면했습니다.
bridge_channel.c: Can't create pipe! Try increasing max file descriptors with ulimit -n
나는 다음을 사용하여 한도를 65536에서 150000으로 늘렸습니다./etc/security/limits.conf
다음을 추가했습니다.
root soft nofile 150000
root hard nofile 150000
* soft nofile 150000
* hard nofile 150000
결과는 ulimit -n
이제 150000입니다.
Asterisk 프로세스의 한도를 확인하려고 하면cat /proc/xxx/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 31945 31945 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 31945 31945 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
이 문제를 해결하는 방법은 무엇입니까?
답변1
/usr/sbin/safe_asterisk에서 MAXFILES 값을 주석 해제하고 변경합니다.
예: MAXFILES = 150000
파일을 저장하고 별표를 다시 시작하세요
완료
답변2
귀하의 시스템이 /etc/security/limits.conf
. 대신 별표 서비스 파일( /etc/systemd/system/asterisk.service
또는 ) 에서 이러한 제한을 구성해야 합니다 /lib/systemd/system/asterisk.service
. 아마도 추가하고 싶을 것입니다.
LimitNOFILE=150000
다음 Asterisk 업데이트로 변경 내용을 덮어쓸 위험이 있으므로 Asterisk와 함께 제공되는 파일을 편집하고 싶지 않을 수도 있습니다. 대신 /etc/systemd/system/asterisk.d/10-file-descriptors.conf
위의 줄을 사용하여 파일을 만드는 것이 좋습니다 . 그러면 Systemd는 구성에 따라 공식 서비스 파일을 자동으로 보강합니다.