问题现象
opensips出现启动异常:
ERROR:core:fm_malloc: not enough free shm memory (560 bytes left, need 720), please increase the "-m" command line parameter!
opensips的内存还有8G,为什么会报这种异常呢?
原因分析
opensips是一个多进程应用,它自身fork了很多进程出来。所以在内存方面,分为两块:
- 每一个进程的私有内存 private memory
- 所有进程共享的内存 shared memory
一般情况下,private memory很少,基本在2M左右;而大部分使用的还是shared memory,因为全局配置的路由数据,呼叫数据等等,都要在所有进程中使用,所以都在shared memory中。
那么Opensips默认的shared memory是多少呢?
从2.4版本运行数据来看是32M。 对于商用来说这个值是有点少的可怜了。 难怪opensips的开发人员都这么感慨。
查看opensips当前的shared memory
./opensipsctl fifo get_statistics shmem:
增加shared memory
opensipsctl的帮助说明里有说明到可以通过参数调节