[asterisk-users] 786 000 files limit Centos 7 - Asterisk keep complaining
Markus Weiler
markus_weiler at mailworks.org
Tue Aug 11 11:29:01 CDT 2015
Hi Stefan,
we ran into a similar problem using Debian.
There we are able to check the current limits using:
pidof asterisk -> 23351
cat /proc/23351/limits
Output:
Limit Soft Limit Hard Limit Units
Max open files 1024 1024 files
I think that in the end
/etc/security/limits.conf
* hard nofile 500000
* soft nofile 500000
root hard nofile 500000
root soft nofile 500000
did the trick. We also tried
vi /etc/sysctl.conf
fs.file-max = 500000
not sure what the solution in the end was. But I remember rebooting was
important.
Markus
Am 11.08.2015 um 11:00 schrieb Stefan Viljoen:
>>> Anybody else ran into this?
>> No, but I would ask myself why so many file descriptors are being used.
>> It sounds like you have a file descriptor leak (not being closed when
>> finished with).
> Hi Tony
>
> Thanks for replying.
>
> I suspected something like that, though repeatedly running
>
> lsof | wc -l
>
> Always stays quite low - 100 000 open files, which is still 8 times less
> than the system maximum as confirmed by running ulimit -n
>
> I also note that this number will increase to about 125 000 but never go
> higher than that, then, as calls hang up, decreate again - during times when
> the CLI is spammed with 100s of "broken pipe" errors due to insuffiecient
> file descriptors, this number never reaches beyond 125 000 out of the
> available 800 000 open files.
>
>> You might also want to look at the output of lsof (or at least some of it)
>> to see what all these file descriptors are pointing to, and whether it is
>> indeed Asterisk that is consuming them.
> If I grep by asterisk on the output of lsof the few thousand lines I have
> looked at all seem to indicate legitimate uses - there are at least two
> files for each conversation in progress (I assume for inward and outward
> RTP) plus one for each file being mixmonitored (which also seems logical)
> and also number-of-active-calls connections to res_timing_dahdi - which all
> looks correct...
>
>> If it is Asterisk, it's quite possible, even probable, that such a leak
>> has been found and fixed, even in the 1.8 series. 1.8.11.0 is rather old -
>> the latest is 1.8.32.3, so it would be best to update to that version and
>> see if the problem persists.
> Ok, I will have to consider that. The thing is the problem is not consistent
> - I can (for example) run 60 calls, with no problems and no reported
> failures in opening files, then calls will -decrease- to about 40 and then
> later spike to 70, but around 50 calls I get the errors coming up thousands
> of times in the CLI, then suddenly stop as the calls -increase- which
> doesn't make sense. But this kind of behaviour does seem consistent with a
> possible leak.
>
> SOMETHING NEW
>
> I have now ran
>
> /usr/bin/prlimit --pid `pidof asterisk`
>
> and I have noticed that even though I have 800 000 files specified, the
> ACTUAL limit in place on Asterisk for numbers of files is only 1024?!
>
> # prlimit --pid `pidof asterisk`
> RESOURCE DESCRIPTION SOFT HARD UNITS
> AS address space limit unlimited unlimited bytes
> CORE max core file size unlimited unlimited blocks
> CPU CPU time unlimited unlimited seconds
> DATA max data size unlimited unlimited bytes
> FSIZE max file size unlimited unlimited blocks
> LOCKS max number of file locks held unlimited unlimited
> MEMLOCK max locked-in-memory address space 65536 65536 bytes
> MSGQUEUE max bytes in POSIX mqueues 819200 819200 bytes
> NICE max nice prio allowed to raise 0 0
> NOFILE max number of open files 1024 4096
> NPROC max number of processes 30861 30861
> RSS max resident set size unlimited unlimited pages
> RTPRIO max real-time priority 0 0
> RTTIME timeout for real-time tasks unlimited unlimited microsecs
> SIGPENDING max number of pending signals 30861 30861
> STACK max stack size 8388608 unlimited bytes
>
> Accordingly I have put this into a cronjob ran each minute:
>
> prlimit --pid `pidof asterisk` --nofile=786000:786000
>
> to try and force the running binary to keep a high file limit (sources say
> to keep it less than the ACTUAL system file limit, in my case 800 000 files)
> on the live Asterisk process.
>
> I'll see if this maybe helps - the above runs via cron each minute.
>
> So it appears for some reason somehow the live running asterisk process
> "loses track" of how many open files it may have, or when it starts it
> somehow does not start with the correct number of maximum open files, as set
> in the system / kernel config?
>
> Anyway, thank you for replying, I'll monitor this new "Cronjob fixup" I'm
> trying and see if it helps.
>
> No wonder it is complaining about running out of file handles if it ACTUALLY
> was only using 1024!
>
> Kind regards
>
> Stefan
>
>
More information about the asterisk-users
mailing list