Currently you are not logged in.

 Login | Register 

Main

Resources

Training

Events

Development

Resources -> Documentation -> Out Of Memory

What to do if "out of memory" or "no more memory" messages are generated by OpenSIPS?

Potential causes

There are two cause that may lead to memory starvation:

a) a small pool of memory - the configured memory is not enough and no more memory can be allocated.

b) memory leak - some memory id not properly freed, making all the memory unavailable (not used, but still allocated)

Determining the cause

If the memory starvation is because of a too small pool of memory, by stopping the traffic on the proxy (without stopping the proxy), the allocated memory will be freed in time (as transactions and location records are freed). TEST: wait ~ 20 minutes without any kind of load the proxy. Test the proxy by placing several calls; if the memory errors pop up again once the traffic is resumed, it means it's a memory leak somewhere; If not sure of the result, consider it's a memory leak.

How to handle it

If the memory pool is too small, just go in config.h and increase the size of the memory pool - for SHM or PKG.

If it is about a memory leak, you need to compile the debug support into memory manager. To do so, follow the next steps:

1. edit Makefile.defs file and remove from the DEFS string the F_MALLOC define (delete "-DF_MALLOC" line) and add the DBG_QM_MALLOC define (insert a "-DDBG_QM_MALLOC" line).

2. recompile everything

3. set memlog=1 in your configuration script (to get the memory messages) - it must be lower than debug.

4. restart your proxy

Now, you may check the memory status in two situations:

1. **At shutdown** - just stop the proxy - the memory manager will dump the memory status. Normally most of the memory is cleaned during shutdown. If there is memory leak, it should be visible as not-freed memory. A memory status looks like:

     0(17665) Memory status (shm):
     0(17665) qm_status (0xb5a7e000):
     0(17665)  heap size= 33554432
     0(17665)  used= 1592952, used+overhead=1811564, free=31742868
     0(17665)  max used (+overhead)= 1811564
     0(17665) dumping all alloc'ed. fragments:
     0(17665)       0. N  address=0xb5ab240c frag=0xb5ab23f4 size=4 used=1
     0(17665)             alloc'd from mem/shm_mem.c: shm_mem_init_mallocs(199)
     0(17665)         start check=f0f0f0f0, end check= c0c0c0c0, abcdefed
     0(17665)       1. N  address=0xb5ab2440 frag=0xb5ab2428 size=4 used=1 
     0(17665)             alloc'd from timer.c: init_timer(52)
     0(17665)         start check=f0f0f0f0, end check= c0c0c0c0, abcdefed

2. **At run time** - you may check the memory status by sending SIGUSR1 signal to the process (do "kill -SIGUSR1 OPENSIPS_PID") - it will dump the SHM and PKG (only for that process) memory status. It is highly recommended to do this after waiting about 20 minutes to be sure that as much as possile memory is freed - all temporary memory used during processing is freed by lack of load on the proxy. Go through the log and see if there is something suspicious, like too much memory still allocated from same place, etc...

If you have no clue how to interpret the logs for memory status, post it on a FTP or HTTP server and send the link on the devel@lists.opensips.org mailing list.

Add Comment 
Sign as Author 
Enter code 273

Your VoIP Account

News

OpenSIPS Getting Started

21st of April 2012 OpenSIPS Getting Started Video Tutorial about how to do an installation of OpenSIPS and OpenSIPS-CP...
Watch it now...

OpenSIPS Devel Course

12th of April 2012 Learn about OpenSIPS internals both core and modules...
Read more...

OpenSIPS 1.8.0

22nd of March 2012 OpenSIPS 1.8.0 major release ready...
Read more...

Dynamic Routing

20th of March 2012 Enhancements of DR engine...
Read more...

APT repository

23nd of February 2012 New official APT repository for Debian & Ubuntu
Read more...

OpenSIPS 1.7.2

22nd of February 2012 OpenSIPS 1.7.2 minor release out...
Read more...

SIP Validation Support

20th of February 2012 Prevent malformed SIP messages from propagating through your network
Read more...

DNS Caching Support

13th of February 2012 Cache system for all types of DNS records
Read more...

Distributed Dialog Profiles

9th of February 2012 Shared dialog profiles between multiple instances of OpenSIPS
Read more...

Configuration and Scripting Tool

19th of January 2012 Graphical Configuration and Scripting Tool for OpenSIPS
Read more...

Cassandra driver

05th of January 2012 Cassandra backend for OpenSIPS
Read more...

LUA integration

05th of January 2012 Using LUA scripting with OpenSIPS
Read more...

OpenSIPS Pavilion @ ITExpo 2012

22th of December 2011 OpenSIPS Pavilion booth #535, 1-3 Feb 2012
Read more...

OpenSIPS and HOMER

14th of December 2011 Distributed SIPtracing and SIPcapturing
Read more...

OpenSIPS eBootcamp

12th of December 2011 New Ebootcamp session starting on 15th of February 2012.
Read more...

OpenSIPS 1.7.1

23rd of November 2011 OpenSIPS 1.7.1 minor release out...
Read more...

Ratelimit

3rd of November 2011 Dynamic and distributed support...
Read more...

OpenSIPS VM 1.7.0

1st of November 2011 Live Virtual Machine for OpenSIPS 1.7...
Read more...

MI via HTTP

25th of October 2011 Bultin HTTP server for MI...
Read more...

Events via RabbitMQ

12th of October 2011 Event Interface can push events via RabbitMQ...
Read more...

Key-Value Cache/DBs

6th of October 2011 Script and module support for key-value oriented backend...
Read more...

GRUU support

4th of October 2011 OpenSIPS registrar with GRUU / RFC5627...
Read more...

OpenSIPS 1.8.0 preview

30th of September 2011 What is set to be done for OpenSIPS 1.8.0...
Read more...

OpenSIPS eBootcamp

28th of July 2011 New Ebootcamp session starting on 19th of September.
Read more...

OpenSIPS 1.7.0

12nd of July 2011 OpenSIPS 1.7.0 major release ready...
Read more...

ClueCon 2011

11th of July 2011 Talks and one-day free training
Read more...

New in 1.7.0

6th of July 2011 What is new in OpenSIPS 1.7.0
Read more...

SVN Freeze

30th of June 2011 Testing phase started for 1.7 release
Read more...

Topology Hiding

30th of June 2011 Topology Hiding based on dialog module
Read more...

New AVP naming

23rd of June 2011 A simpler and more efficient way of naming AVPs
Read more...

DB Optimization

22nd of June 2011 Multi-row DB insert operations.
Read more...

Event Notification Interface

26th of May 2011 External interaction via the Event Interface.
Read more...

OpenSIPS eBootcamp

28th of March 2011 New Ebootcamp session starting on 2nd of May.
Read more...

UAC_REGISTRANT module

10th of March 2011 New module to allow OpenSIPS to UAC register.
Read more...

Performance degradation with complexity

08th of March 2011 Tests to show how performance is affected with complexity.
Read more...

Load and performance monitoring

22nd of February 2011 New statistics and traps for OpenSIPS monitoring.
Read more...

OpenSIPS 2.0

17th of February 2011 OpenSIPS 2.0 first code release.
Read more...

OpenSIPS Online Meeting

15th of February 2011 OpenSIPS Online Monthly Meetings started.
Read more...

OpenSIPS Social Event

24th of January 2011 OpenSIPS Social Event - Miami, 3rd of February.
Read more...

OpenSIPS eBootcamp

17th of January 2011 New Ebootcamp session starting on 28th of February.
Read more...

OpenSIPS 1.6.4

20th of December 2010 OpenSIPS 1.6.4 major release ready...
Read more...

OpenSIPS media timeout

16th of December 2010 Ghost call hunting with media timeout ...
Read more...


Edit | History | Print | Recent Changes | Search
Page last modified on June 27, 2011, at 05:05 PM