問題現(xiàn)象
opensips出現(xiàn)啟動(dòng)異常:

啟動(dòng)異常截圖
ERROR:core:fm_malloc: not enough free shm memory (560 bytes left, need 720), please increase the "-m" command line parameter!
opensips的內(nèi)存還有8G,為什么會(huì)報(bào)這種異常呢?
原因分析
opensips是一個(gè)多進(jìn)程應(yīng)用,它自身fork了很多進(jìn)程出來。所以在內(nèi)存方面,分為兩塊:
- 每一個(gè)進(jìn)程的私有內(nèi)存 private memory
- 所有進(jìn)程共享的內(nèi)存 shared memory
一般情況下,private memory很少,基本在2M左右;而大部分使用的還是shared memory,因?yàn)槿峙渲玫穆酚蓴?shù)據(jù),呼叫數(shù)據(jù)等等,都要在所有進(jìn)程中使用,所以都在shared memory中。
那么Opensips默認(rèn)的shared memory是多少呢?
從2.4版本運(yùn)行數(shù)據(jù)來看是32M。 對(duì)于商用來說這個(gè)值是有點(diǎn)少的可憐了。 難怪opensips的開發(fā)人員都這么感慨。
查看opensips當(dāng)前的shared memory
./opensipsctl fifo get_statistics shmem:

執(zhí)行結(jié)果
增加shared memory
opensipsctl的幫助說明里有說明到可以通過參數(shù)調(diào)節(jié)

參數(shù)說明