11

How do i increase the file limit for the asterisk daemon on my ubuntu computer? When I login as root and use the ulimit, it says unlimited already. I can't login as asterisk because that user doesn't have shell access, it's just a daemon.

I can see in /proc/<asterisk proc id>/limits the current Max open files is 1024. I want to double that.

I even went into /etc/security/limit.conf and added

asterisk soft nofile 2048
asterisk hard nofile 2048
@asterisk soft nofile 2048
@asterisk hard nofile 2048

THen I reboot server. Still, the max open files is 1024.

What else can I do?

John
  • 7,343
  • 23
  • 63
  • 87

6 Answers6

5

You could always edit the /etc/init.d/asterisk file and prepend ulimit -n 2048 to the top.

This is the same process that MySQL, Varnish and a few others use.

Ben Lessani
  • 5,244
  • 17
  • 37
3

For Asterisk running under systemd (e.g. on Debian 9), you need to create a systemd override file:

mkdir /etc/systemd/system/asterisk.service.d/

Create /etc/systemd/system/asterisk.service.d/override.conf with the following contents:

[Service]
LimitNOFILE=100000

Reload the unit:

systemctl daemon-reload

Restart Asterisk:

systemctl restart astertisk

Check the limit:

cat /proc/<your asterisk PID>/limits | grep '^Max open files'
phil-lavin
  • 590
  • 1
  • 3
  • 15
2

I had this exact issue for anyone stumbling across this in the future (is it chrome?)

The system that I was having the issue on was Debian rather than Ubuntu, but hey, close enough.

I had to use the following in '/etc/security/limits.conf' to get it working, as specifying the user & group didn't work.

*               soft    nofile          10240
*               hard    nofile          10240

Logging in and out again applies this change.

  • What does logging in and out have to do with a specific running daemon? Do you mean "restart the service", or...? – Tom Wadley Sep 19 '14 at 10:05
2

In Asterisk 11 (I've not checked others) this is set with the maxfiles directive in the [general] section of asterisk.conf. None of the other answers worked for me on Debian.

phil-lavin
  • 590
  • 1
  • 3
  • 15
1

Here is an easy way to increase ulimit value in asterisk.

Go to this file. /etc/asterisk/asterisk.conf

[options]
internal_timing = no
maxfiles = 999999

paste above line is asterisk.conf file then execute below commands.

asterisk -rx "core restart now"
asterisk -rx "ulimit descriptors"

Output

Number of file descriptors (descriptors) is limited to 999999.
1

It is better to edit the configurations in /usr/sbin/safe_asterisk instead on editing init.d script.

you can set many parameters (PRIORITY, SYSMAXFILES, MAXFILES ...). Uncomment SYSMAXFILES and MAXFILES; and increase their values.

ItsMe
  • 121
  • 2
  • Directly edit the executable? Then the changes will be lost the next time the executable gets updated. Configuration changes should go in config files. – Andrew Schulman Nov 21 '14 at 16:22
  • That's no more of an executable than is /etc/rc.d/init.d/asterisk which was accepted, so, have an upvote. I find this method to be rather reliable. – dougBTV Aug 20 '15 at 19:13
  • @ItsMe; I Think you have the best answer, i have tried all other alternatives without success, but your solution is radical and clean. Thank's – elhadi d Nov 30 '16 at 08:43