If you have problem with the memory on your SIP router, do these:
- Check things related to the memory management in your operating system. This is explained in the article “Linux Tuning For SIP Routers – Part 3“.
- Check the memory management in the application of your SIP router.
Here i will give you just an example and you will take this as a way of thinking.
OpenSIPS Memory Debugging
If you got an error message related to OpenSIPS memory (e.g out of memory message), you have to debug it. The OpenSIPS Memory manager (NOT standard) supports debugging so what you can do is enabling the debugging:
- From the OpenSIPS ‘s src folder (“/usr/local/src/opensips_1_11″), run: “make menuconfig”. You will get this text based interface:
- Press “ENTER” key to enter in “Configure Compile Flags” item:
- Use the arrow keys to go to the sub-item “F_MALLOC“. Press the SPACE key to uncheck it. Then move to DBG_QM_MALLOC and check it (press SPACE key). Use the option “DBG_QM_MALLOC” in development and the option “F_MALLOC” in deployment because “F_MALLOC” is much faster.
- Press ‘q’ to go back to the previous screen.
- Press on “Save Changes”.
- Press ‘q’ again and then move to the item “Compile and Install OpenSIPS” to compile and install OpenSIPS.
- Open the configuration file and set memlog=1
- Restart OpenSIPS and wait OpenSIPS to be completely loaded.
Now everything is ready to get the memory dumps (at shutdown and at runtime).
If you want to get the dumps at runtime:
- Run “ps aux |grep opensips” to get OpenSIPS processes with their PIDs.
- Run “kill -SIGUSR1 PID”. Where PID is the ID of the process and SIGUSR1 is the signal name which triggers the memory dump in OpenSIPS. The signals handlers (file: “main.c”) are loaded at the first stage of OpenSIPS startup.
- Wait some time so the messages for private and shared memory will be dumped.
At shutdown: Stop OpenSIPS and go to the log and get the memory messages.