Debian увеличивает ulimit для Asterisk

Debian увеличивает ulimit для Asterisk

Я столкнулся с проблемой Asterisk 13.11.2 на Debian 8, когда он аварийно завершает работу после достижения лимита открытых файлов.

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

Когда я пытаюсь проверить лимит для процесса Asteriskcat /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

Раскомментируйте и измените значение MAXFILES в /usr/sbin/safe_asterisk

пример: MAXFILES = 150000

сохраните файл и перезапустите asterisk

сделанный

решение2

Я подозреваю, что ваша система использует systemd, который игнорирует /etc/security/limits.conf. Вместо этого вам нужно настроить эти ограничения в файле службы asterisk ( /etc/systemd/system/asterisk.serviceили /lib/systemd/system/asterisk.service). Вероятно, вы захотите добавить

LimitNOFILE=150000

Обратите внимание, что вы, вероятно, не захотите редактировать файл, который идет с Asterisk, поскольку вы столкнетесь с риском того, что ваши изменения будут перезаписаны следующим обновлением Asterisk. Вместо этого я бы рекомендовал создать файл /etc/systemd/system/asterisk.d/10-file-descriptors.confсо строкой выше. Затем Systemd автоматически дополнит официальный файл службы вашей конфигурацией.

решение3

Установите следующие параметры в asterisk.conf

[options]
internal_timing = no
maxfiles = 999999

Полное решение

Связанный контент