Hi Daniel,
The system is running Perl 5.8.8 on Red Hat
Enterprise Linux Server release 5.4. If I remember
right programs running under Valgrind can have
issues, so I'm not sure if the customer will want to
do that. Ideally we'd do it on a test system, but
I'm not sure if we have any RHEL available.
I'll see what we can do. Thanks again.
On 25 July 2013 04:55, Daniel-Constantin Mierla
<miconda(a)gmail.com <mailto:miconda@gmail.com>> wrote:
Hello,
I would say that perl_exec() is the one with the
highest chances to be the reason for the leak.
Next is line would be db_mysql module, if liked
with some custom mysql client library, although
even in this case will be unlikely.
Back to perl, the module itself does not call
any malloc, so it might be the embedding Perl
API that is not used properly in the module.
Can you use some testbed, set children=1 and run
kamailio under valgrind, then do some calls and
see if it detects the source of the leak?
I'm not using the perl module, I will try to
check it whenever I get a chance in the next
days. What version of perl do you have installed?
Cheers,
Daniel
On 7/24/13 10:31 AM, David Cunningham wrote:
Hello,
We don't do any kamctl commands at all. We do
have various modules loaded, as follows. The
primary functions we use Kamailio for are phone
registrations through usrloc, and routing calls
to Asterisk through logic contained in Perl via
perl_exec().
Thanks for all your advice so far!
loadmodule "tm.so"
loadmodule "tmx.so"
loadmodule "usrloc.so"
loadmodule "auth.so"
loadmodule "auth_db.so"
loadmodule "ctl.so"
loadmodule "db_mysql.so"
loadmodule "kex.so"
loadmodule "maxfwd.so"
loadmodule "mi_fifo.so"
loadmodule "mi_rpc.so"
loadmodule "nathelper.so"
loadmodule "perl.so"
loadmodule "pv.so"
loadmodule "registrar.so"
loadmodule "rr.so"
loadmodule "sanity.so"
loadmodule "siputils.so"
loadmodule "sl.so"
loadmodule "textops.so"
loadmodule "xlog.so"
On 24 July 2013 16:33, Daniel-Constantin Mierla
<miconda(a)gmail.com <mailto:miconda@gmail.com>>
wrote:
Hello,
On 7/24/13 4:24 AM, David Cunningham wrote:
> Hello,
>
> Thank you very much for the email. In reply:
>
> 1. The system ran out of memory. Linux's
> oom-killer killed Kamailio.
then all the instructions I gave are
useless, they are for debugging kamailio's
internal memory manager, which handles pkg
and shm mallocs.
The chances to be from kamailio itself are
very low now. Do you do lot of mi commands
(e.g., kamctl ...)? The mi api uses system
malloc, but the rest of code should use
internal memory manager which does not go
beyond the limits set with -m and -M, thus
not causing an OS memory exhaustion.
Can you list what modules are you loading?
At some point it was a leak in libssl, in
case you use tls a lot. But could be
another external library...
Cheers,
Daniel
>
> 2. You're right, DEBUG_MEMORY is a local
> configuration setting. If defined it sets
> memdbg to -2, and memlog to -2. The debug
> setting is -1.
>
> 3. We'll try setting mem_summary=12, thanks.
>
> 4. We'll try setting asynchronous syslog,
> thanks.
>
> 5. Our configuration totals 338 lines, or
> approx 8.5kb. Is that a lot?
>
> 6. We'll try setting mem_join=1, thanks.
>
>
>
> On 23 July 2013 16:53, Daniel-Constantin
> Mierla <miconda(a)gmail.com
> <mailto:miconda@gmail.com>> wrote:
>
> Hello,
>
> first, to clarify, is the system
> memory or kamailio's pkg/shm memory
> running out? If the operating system
> runs out of memory, then should be a
> leak in a library, because kamailio
> modules uses only from a pre-allocated
> chunk, not going over it.
>
>
> On 7/23/13 7:33 AM, David Cunningham
> wrote:
>
> Hello,
>
> We're running a Kamailio 3.3.4
> system, and Kamailio is slowly
> using more and more memory. Over a
> couple of weeks it will run out of
> system memory.
>
> We tried to enable memory
> debugging doing the following, but
> it resulted in Kamailio not
> responding to any SIP packets.
> Would anyone have advice please on
> how to debug the situation?
>
> 1. In Makefile.defs set MEMDBG to
> 1 and recompile Kamailio.
> 2. In kamailio.cfg add the line:
> #!define DEBUG_MEMORY 1
>
> do you set something special in config
> when DEBUG_MEMORY is 1? It is not by
> default there, so I assume you added
> some rules based on this pre-processor
> directive.
>
> For memory troubleshooting, set memlog
> to a value lower than debug parameter
> in config file and try with
> mem_summary=12 for a more compact
> output. See more about these
> parameters in the wiki:
>
> -
>
http://www.kamailio.org/wiki/cookbooks/3.3.x/core#memlog
>
> Run kamailio for a while in normal
> conditions, then restart it to get the
> memory usage summaries. There should
> be indication if there is some leak,
> by seeing memory chunks allocated many
> times from a function used at runtime.
> You can send the memory summary for a
> process here, we can look at it.
>
>
>
> While this was running and
> Kamailio didn't respond to
> packets, it logged lots of lines
> like this:
>
>
> Do you have syslog to be configured in
> asynchronous mode? See the notes from:
>
> -
>
http://www.kamailio.org/wiki/tutorials/3.2.x/syslog
>
> The memdbg is less than debug value,
> that means printing few log messages
> for each memory operation. You can
> make memdbg higher and rely on memlog
> for memory summaries, otherwise will
> be lot of log messages related to memory.
>
>
> Jul 22 21:32:22 hostname kamailio:
> : <core> [mem/q_malloc.c:369]:
> qm_malloc(0x4000e008, 128) called
> from <core>: cfg.lex: addstr(1438)
> Jul 22 21:32:22 hostname kamailio:
> : <core> [mem/q_malloc.c:413]:
> qm_malloc(0x4000e008, 128) returns
> address 0x40048918 frag.
> 0x40048900 (size=128) on 1 -th hit
> Jul 22 21:32:22 hostname kamailio:
> : <core> [mem/q_malloc.c:369]:
> qm_malloc(0x4000e008, 128) called
> from <core>: cfg.lex: addstr(1438)
> Jul 22 21:32:22 hostname kamailio:
> : <core> [mem/q_malloc.c:413]:
> qm_malloc(0x4000e008, 128) returns
> address 0x400489c8 frag.
> 0x400489b0 (size=128) on 1 -th hit
>
> addstr() is a function used only for
> parsing configuration file, as long as
> you can still see them, the
> configuration file parsing was not
> finish. addstr() is not a source of
> leaks because it is not used at runtime.
>
> If you have large config file, then
> you can get close to the limits of the
> private memory, which is set to 4MB.
> You can increase its value using -M
> parameter (e.g., start kamailio with
> -M 8 to set it to use 8MB of memory).
>
> Over the time, the private memory can
> get used due to fragmentation, you can
> set the mem_join parameter in config
> file to avoid it (works when compiled
> with MEMDBG=1).
>
> To monitor usage of internal pkg
> memory, then you can use sercmd with
> pkg.stats command:
>
>
http://kamailio.org/docs/modules/3.3.x/modules_k/kex.html#idp16972640
>
> Shared memory stats are printed by
> 'kamctl fifo get_statistics shmem:'
>
> When you see significant increase of
> the memory usage, then you can restart
> to get the summaries.
>
> You should run these commands after
> start, just to see the initial usage
> of memory.
>
> Cheers,
> Daniel
>
> --
> Daniel-Constantin Mierla -
>
http://www.asipto.com
>
http://twitter.com/#!/miconda
> <http://twitter.com/#%21/miconda> -
>
http://www.linkedin.com/in/miconda
>
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio
> (OpenSER) - sr-users mailing list
> sr-users(a)lists.sip-router.org
> <mailto:sr-users@lists.sip-router.org>
>
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
>
>
>
> --
> David Cunningham, Voisonics
>
http://voisonics.com/
> USA: +1 213 221 1092
> <tel:%2B1%20213%20221%201092>
> UK: +44 (0) 20 3298 1642
> <tel:%2B44%20%280%29%2020%203298%201642>
> Australia: +61 (0) 2 8063 9019
> <tel:%2B61%20%280%29%202%208063%209019>
--
Daniel-Constantin Mierla -http://www.asipto.com
http://twitter.com/#!/miconda
<http://twitter.com/#%21/miconda> -http://www.linkedin.com/in/miconda
--
David Cunningham, Voisonics
http://voisonics.com/
USA: +1 213 221 1092 <tel:%2B1%20213%20221%201092>
UK: +44 (0) 20 3298 1642
<tel:%2B44%20%280%29%2020%203298%201642>
Australia: +61 (0) 2 8063 9019
<tel:%2B61%20%280%29%202%208063%209019>
--
Daniel-Constantin Mierla -http://www.asipto.com
<http://twitter.com/#%21/miconda> -http://www.linkedin.com/in/miconda
--
David Cunningham, Voisonics
USA: +1 213 221 1092 <tel:%2B1%20213%20221%201092>
UK: +44 (0) 20 3298 1642
<tel:%2B44%20%280%29%2020%203298%201642>
Australia: +61 (0) 2 8063 9019
<tel:%2B61%20%280%29%202%208063%209019>