Hello I have problem with Kamailio presence,dialog(BLF) server, that not released memory. In product enviroment stop working after cca. week in test enviroment out of memory after cca. 12000 calls.
I create test enviromet on one openvz debian wheezy server where run: * kamailio stable 4.2.4 (x86_64/linux) as registrar and main proxy * kamailio develop 4.3.0-pre1 (x86_64/linux) as presence server * sipp uas and uac * connect sip phone grandstream GXP2160 with 24 blf buttons
On grandstream gxp2160, sets programable keys to blf 1-24. BLF works correctly, only problem is a memory leak. The stable kamailio as presence server leak too.
### Tests results: ``` free on start: total used free shared buffers cached Mem: 2800000 942080 1857920 0 0 170008 -/+ buffers/cache: 772072 2027928 Swap: 0 0 0 ---------------------------------------- Presence Kbytes RSS Dirty total kB 140188 6212 3496 pid:8033 total kB 140188 4180 1728 pid:8035 total kB 140188 2644 1428 pid:8036 total kB 140188 4184 1732 pid:8037 total kB 140188 2652 1436 pid:8038 total kB 140188 2024 1232 pid:8039 total kB 140188 2640 1840 pid:8040 total kB 140192 1832 1204 pid:8041 total kB 140188 2116 1204 pid:8042 total kB 140188 2160 1544 pid:8043 ---------------------------------------- Main proxy Kbytes RSS Dirty total kB 156240 7456 4000 pid:8062 total kB 156240 5076 2228 pid:8066 total kB 156240 4860 2028 pid:8067 total kB 156240 5232 2236 pid:8068 total kB 156240 4828 2012 pid:8069 total kB 156240 2916 1736 pid:8070 total kB 156240 3496 2456 pid:8071 total kB 156244 2280 1616 pid:8072 total kB 156240 2676 1632 pid:8073 total kB 156240 2596 1624 pid:8074 total kB 156240 2776 1684 pid:8075 ----------------------------------------
make 10000 calls ----------------------------- Statistics Screen ------- [1-9]: Change Screen -- Start Time | 2015-05-06 14:11:11.983305 1430914271.983305 Last Reset Time | 2015-05-06 16:58:11.995418 1430924291.995418 Current Time | 2015-05-06 16:58:11.995471 1430924291.995471 -------------------------+---------------------------+-------------------------- Counter Name | Periodic value | Cumulative value -------------------------+---------------------------+-------------------------- Elapsed Time | 00:00:00:000000 | 02:47:00:012000 Call Rate | 0.000 cps | 0.998 cps -------------------------+---------------------------+-------------------------- Incoming call created | 0 | 0 OutGoing call created | 0 | 10000 Total Call created | | 10000 Current Call | 0 | -------------------------+---------------------------+-------------------------- Successful call | 0 | 9991 Failed call | 0 | 9 -------------------------+---------------------------+-------------------------- Response Time 1 | 00:00:00:000000 | 00:00:01:012000 Call Length | 00:00:00:000000 | 00:00:02:019000 ------------------------------ Test Terminated --------------------------------
After 10000 calls:
/root/count_mem.sh total used free shared buffers cached Mem: 2800000 2637760 162240 0 0 178412 -/+ buffers/cache: 2459348 340652 Swap: 0 0 0 ---------------------------------------- Presence Kbytes RSS Dirty total kB 140188 6212 3496 pid:8033 total kB 561788 431240 428300 pid:8035 total kB 564800 434212 431288 pid:8036 total kB 565200 434596 431656 pid:8037 total kB 564576 433952 431028 pid:8038 total kB 140188 8640 6784 pid:8039 total kB 140188 7184 6328 pid:8040 total kB 140192 1832 1204 pid:8041 total kB 140188 2360 1272 pid:8042 total kB 140188 2160 1544 pid:8043 ---------------------------------------- Main proxy Kbytes RSS Dirty total kB 156240 7456 4000 pid:8062 total kB 156240 13984 9996 pid:8066 total kB 156240 13956 9996 pid:8067 total kB 156240 13980 9996 pid:8068 total kB 156240 13796 9988 pid:8069 total kB 156240 6500 5128 pid:8070 total kB 156240 11064 9880 pid:8071 total kB 156244 2280 1616 pid:8072 total kB 156240 2676 1632 pid:8073 total kB 156240 3084 2088 pid:8074 total kB 156240 2776 1684 pid:8075 ----------------------------------------
and next day morning: /root/count_mem.sh total used free shared buffers cached Mem: 2800000 2637760 162240 0 0 39604 -/+ buffers/cache: 2598156 201844 Swap: 0 0 0 ---------------------------------------- Presence Kbytes RSS Dirty total kB 140188 4936 3496 pid:8033 total kB 561788 430912 428300 pid:8035 total kB 564800 433900 431288 pid:8036 total kB 565200 434272 431660 pid:8037 total kB 564576 433644 431032 pid:8038 total kB 140188 8336 6788 pid:8039 total kB 140188 6880 6336 pid:8040 total kB 140192 1604 1204 pid:8041 total kB 140188 1936 1272 pid:8042 total kB 140188 1872 1544 pid:8043 ---------------------------------------- Main proxy Kbytes RSS Dirty total kB 156240 5936 4000 pid:8062 total kB 156240 13644 9996 pid:8066 total kB 156240 13580 9996 pid:8067 total kB 156240 13600 9996 pid:8068 total kB 156240 13580 9996 pid:8069 total kB 156240 7064 5256 pid:8070 total kB 156240 10696 9880 pid:8071 total kB 156244 2008 1616 pid:8072 total kB 156240 2284 1632 pid:8073 total kB 156240 2736 2088 pid:8074 total kB 156240 2436 1684 pid:8075 ---------------------------------------- ``` ### Configs for replication: #### Kamailio main registrar server changes from stock config mark as #change ``` #!KAMAILIO # # Kamailio (OpenSER) SIP Server v4.2 - default configuration script # - web: http://www.kamailio.org # - git: http://sip-router.org # # Direct your questions about this file to: sr-users@lists.sip-router.org # # Refer to the Core CookBook at http://www.kamailio.org/wiki/ # for an explanation of possible statements, functions and parameters. # # Several features can be enabled using '#!define WITH_FEATURE' directives: # # *** To run in debug mode: # - define WITH_DEBUG # # *** To enable mysql: #!define WITH_MYSQL # # *** To enable authentication execute: # - enable mysql #!define WITH_AUTH # - add users using 'kamctl' # # *** To enable IP authentication execute: # - enable mysql # - enable authentication # - define WITH_IPAUTH # - add IP addresses with group id '1' to 'address' table # # *** To enable persistent user location execute: # - enable mysql #!define WITH_USRLOCDB # # *** To enable presence server execute: # - enable mysql #!define WITH_PRESENCE # # *** To enable nat traversal execute: #!define WITH_NAT # - install RTPProxy: http://www.rtpproxy.org # - start RTPProxy: # rtpproxy -l _your_public_ip_ -s udp:localhost:7722 # - option for NAT SIP OPTIONS keepalives: WITH_NATSIPPING # # *** To enable PSTN gateway routing execute: # - define WITH_PSTN # - set the value of pstn.gw_ip # - check route[PSTN] for regexp routing condition # # *** To enable database aliases lookup execute: # - enable mysql # - define WITH_ALIASDB # # *** To enable speed dial lookup execute: # - enable mysql # - define WITH_SPEEDDIAL # # *** To enable multi-domain support execute: # - enable mysql # - define WITH_MULTIDOMAIN # # *** To enable TLS support execute: # - adjust CFGDIR/tls.cfg as needed # - define WITH_TLS # # *** To enable XMLRPC support execute: # - define WITH_XMLRPC # - adjust route[XMLRPC] for access policy # # *** To enable anti-flood detection execute: # - adjust pike and htable=>ipban settings as needed (default is # block if more than 16 requests in 2 seconds and ban for 300 seconds) # - define WITH_ANTIFLOOD # # *** To block 3XX redirect replies execute: # - define WITH_BLOCK3XX # # *** To enable VoiceMail routing execute: # - define WITH_VOICEMAIL # - set the value of voicemail.srv_ip # - adjust the value of voicemail.srv_port # # *** To enhance accounting execute: # - enable mysql # - define WITH_ACCDB # - add following columns to database #!ifdef ACCDB_COMMENT ALTER TABLE acc ADD COLUMN src_user VARCHAR(64) NOT NULL DEFAULT ''; ALTER TABLE acc ADD COLUMN src_domain VARCHAR(128) NOT NULL DEFAULT ''; ALTER TABLE acc ADD COLUMN src_ip varchar(64) NOT NULL default ''; ALTER TABLE acc ADD COLUMN dst_ouser VARCHAR(64) NOT NULL DEFAULT ''; ALTER TABLE acc ADD COLUMN dst_user VARCHAR(64) NOT NULL DEFAULT ''; ALTER TABLE acc ADD COLUMN dst_domain VARCHAR(128) NOT NULL DEFAULT ''; ALTER TABLE missed_calls ADD COLUMN src_user VARCHAR(64) NOT NULL DEFAULT ''; ALTER TABLE missed_calls ADD COLUMN src_domain VARCHAR(128) NOT NULL DEFAULT ''; ALTER TABLE missed_calls ADD COLUMN src_ip varchar(64) NOT NULL default ''; ALTER TABLE missed_calls ADD COLUMN dst_ouser VARCHAR(64) NOT NULL DEFAULT ''; ALTER TABLE missed_calls ADD COLUMN dst_user VARCHAR(64) NOT NULL DEFAULT ''; ALTER TABLE missed_calls ADD COLUMN dst_domain VARCHAR(128) NOT NULL DEFAULT ''; #!endif
####### Include Local Config If Exists ######### import_file "kamailio-local.cfg"
####### Defined Values #########
# *** Value defines - IDs used later in config #!ifdef WITH_MYSQL # - database URL - used to connect to database server by modules such # as: auth_db, acc, usrloc, a.s.o. #!ifndef DBURL #change #!define DBURL "mysql://root:root@localhost/stable" #!endif #!endif #!ifdef WITH_MULTIDOMAIN # - the value for 'use_domain' parameters #!define MULTIDOMAIN 1 #!else #!define MULTIDOMAIN 0 #!endif
# - flags # FLT_ - per transaction (message) flags # FLB_ - per branch flags #!define FLT_ACC 1 #!define FLT_ACCMISSED 2 #!define FLT_ACCFAILED 3 #!define FLT_NATS 5
#change #!define FLT_PUBLISH 19 #!define FLT_DIALOG 18
#!define FLB_NATB 6 #!define FLB_NATSIPPING 7
####### Global Parameters #########
### LOG Levels: 3=DBG, 2=INFO, 1=NOTICE, 0=WARN, -1=ERR #!ifdef WITH_DEBUG debug=4 log_stderror=yes #!else debug=2 log_stderror=no #!endif
memdbg=5 memlog=5
log_facility=LOG_LOCAL0
fork=yes children=4
/* uncomment the next line to disable TCP (default on) */ disable_tcp=yes
/* uncomment the next line to disable the auto discovery of local aliases based on reverse DNS on IPs (default on) */ auto_aliases=no
/* add local domain aliases */ #alias="sip.mydomain.com"
/* uncomment and configure the following line if you want Kamailio to bind on a specific interface/port/proto (default bind on all available) */ listen=udp:81.31.45.53:6688 #change
/* port to listen to * - can be specified more than once if needed to listen on many ports */ #port=6688
#!ifdef WITH_TLS enable_tls=yes #!endif
# life time of TCP connection when there is no traffic # - a bit higher than registration expires to cope with UA behind NAT tcp_connection_lifetime=3605
####### Custom Parameters #########
# These parameters can be modified runtime via RPC interface # - see the documentation of 'cfg_rpc' module. # # Format: group.id = value 'desc' description # Access: $sel(cfg_get.group.id) or @cfg_get.group.id #
#!ifdef WITH_PSTN # PSTN GW Routing # # - pstn.gw_ip: valid IP or hostname as string value, example: # pstn.gw_ip = "10.0.0.101" desc "My PSTN GW Address" # # - by default is empty to avoid misrouting pstn.gw_ip = "" desc "PSTN GW Address" pstn.gw_port = "" desc "PSTN GW Port" #!endif
#!ifdef WITH_VOICEMAIL # VoiceMail Routing on offline, busy or no answer # # - by default Voicemail server IP is empty to avoid misrouting voicemail.srv_ip = "" desc "VoiceMail IP Address" voicemail.srv_port = "5060" desc "VoiceMail Port" #!endif
####### Modules Section ########
# set paths to location of modules (to sources or installation folders) #!ifdef WITH_SRCPATH mpath="modules/" #!else mpath="/usr/local/kamailio-4.2/lib64/kamailio/modules/" #!endif
#!ifdef WITH_MYSQL loadmodule "db_mysql.so" #!endif
loadmodule "mi_fifo.so" loadmodule "kex.so" loadmodule "corex.so" loadmodule "tm.so" loadmodule "tmx.so" loadmodule "sl.so" loadmodule "rr.so" loadmodule "pv.so" loadmodule "maxfwd.so" loadmodule "usrloc.so" loadmodule "registrar.so" loadmodule "textops.so" loadmodule "siputils.so" loadmodule "xlog.so" loadmodule "sanity.so" loadmodule "ctl.so" loadmodule "cfg_rpc.so" loadmodule "mi_rpc.so" loadmodule "acc.so"
#!ifdef WITH_AUTH loadmodule "auth.so" loadmodule "auth_db.so" #!ifdef WITH_IPAUTH loadmodule "permissions.so" #!endif #!endif
#!ifdef WITH_ALIASDB loadmodule "alias_db.so" #!endif
#!ifdef WITH_SPEEDDIAL loadmodule "speeddial.so" #!endif
#!ifdef WITH_MULTIDOMAIN loadmodule "domain.so" #!endif
#!ifdef WITH_PRESENCE #change loadmodule "dialog.so" loadmodule "pua.so" loadmodule "pua_dialoginfo.so" #loadmodule "presence.so" #loadmodule "presence_xml.so" #!endif
#!ifdef WITH_NAT loadmodule "nathelper.so" loadmodule "rtpproxy.so" #!endif
#!ifdef WITH_TLS loadmodule "tls.so" #!endif
#!ifdef WITH_ANTIFLOOD loadmodule "htable.so" loadmodule "pike.so" #!endif
#!ifdef WITH_XMLRPC loadmodule "xmlrpc.so" #!endif
#!ifdef WITH_DEBUG loadmodule "debugger.so" #!endif
# ----------------- setting module-specific parameters ---------------
modparam("xlog", "buf_size", 8192) modparam("xlog", "force_color", 0) modparam("xlog", "prefix", "") modparam("xlog", "long_format", 0)
# ----- mi_fifo params ----- modparam("mi_fifo", "fifo_name", "/tmp/kamailio_stable_fifo")
# ----- tm params ----- # auto-discard branches from previous serial forking leg modparam("tm", "failure_reply_mode", 3) # default retransmission timeout: 30sec modparam("tm", "fr_timer", 30000) # default invite retransmission timeout after 1xx: 120sec modparam("tm", "fr_inv_timer", 120000)
# ----- rr params ----- # set next param to 1 to add value to ;lr param (helps with some UAs) modparam("rr", "enable_full_lr", 0) # do not append from tag to the RR (no need for this script) modparam("rr", "append_fromtag", 0)
# ----- registrar params ----- modparam("registrar", "method_filtering", 1) /* uncomment the next line to disable parallel forking via location */ # modparam("registrar", "append_branches", 0) /* uncomment the next line not to allow more than 10 contacts per AOR */ #modparam("registrar", "max_contacts", 10) # max value for expires of registrations modparam("registrar", "max_expires", 3600) # set it to 1 to enable GRUU modparam("registrar", "gruu_enabled", 0)
# ----- acc params ----- /* what special events should be accounted ? */ modparam("acc", "early_media", 0) modparam("acc", "report_ack", 0) modparam("acc", "report_cancels", 0) /* by default ww do not adjust the direct of the sequential requests. if you enable this parameter, be sure the enable "append_fromtag" in "rr" module */ modparam("acc", "detect_direction", 0) /* account triggers (flags) */ modparam("acc", "log_flag", FLT_ACC) modparam("acc", "log_missed_flag", FLT_ACCMISSED) modparam("acc", "log_extra", "src_user=$fU;src_domain=$fd;src_ip=$si;" "dst_ouser=$tU;dst_user=$rU;dst_domain=$rd") modparam("acc", "failed_transaction_flag", FLT_ACCFAILED) /* enhanced DB accounting */ #!ifdef WITH_ACCDB modparam("acc", "db_flag", FLT_ACC) modparam("acc", "db_missed_flag", FLT_ACCMISSED) modparam("acc", "db_url", DBURL) modparam("acc", "db_extra", "src_user=$fU;src_domain=$fd;src_ip=$si;" "dst_ouser=$tU;dst_user=$rU;dst_domain=$rd") #!endif
# ----- usrloc params ----- /* enable DB persistency for location entries */ #!ifdef WITH_USRLOCDB modparam("usrloc", "db_url", DBURL) modparam("usrloc", "db_mode", 2) modparam("usrloc", "use_domain", MULTIDOMAIN) #!endif
# ----- auth_db params ----- #!ifdef WITH_AUTH modparam("auth_db", "db_url", DBURL) modparam("auth_db", "calculate_ha1", yes) modparam("auth_db", "password_column", "password") modparam("auth_db", "load_credentials", "") modparam("auth_db", "user_column", "username") modparam("auth_db", "use_domain", MULTIDOMAIN)
# ----- permissions params ----- #!ifdef WITH_IPAUTH modparam("permissions", "db_url", DBURL) modparam("permissions", "db_mode", 1) #!endif
#!endif
# ----- alias_db params ----- #!ifdef WITH_ALIASDB modparam("alias_db", "db_url", DBURL) modparam("alias_db", "use_domain", MULTIDOMAIN) #!endif
# ----- speeddial params ----- #!ifdef WITH_SPEEDDIAL modparam("speeddial", "db_url", DBURL) modparam("speeddial", "use_domain", MULTIDOMAIN) #!endif
# ----- domain params ----- #!ifdef WITH_MULTIDOMAIN modparam("domain", "db_url", DBURL) # register callback to match myself condition with domains list modparam("domain", "register_myself", 1) #!endif
#!ifdef WITH_PRESENCE # ----- presence params ----- #modparam("presence", "db_url", DBURL)
# ----- presence_xml params ----- #change #modparam("presence_xml", "db_url", DBURL) #modparam("presence_xml", "force_active", 1) modparam("dialog", "dlg_flag",FLT_DIALOG) modparam("dialog", "default_timeout",10800)
modparam("pua", "db_url", DBURL) modparam("pua", "dlginfo_increase_version", 1) modparam("pua", "outbound_proxy", "sip:81.31.45.53:9988") modparam("pua_dialoginfo", "send_publish_flag", FLT_PUBLISH) modparam("pua_dialoginfo", "use_pubruri_avps", 1) modparam("pua_dialoginfo", "pubruri_caller_avp", "$avp(s:pcaller)") modparam("pua_dialoginfo", "pubruri_callee_avp", "$avp(s:pcallee)") modparam("pua_dialoginfo", "include_callid", 1) modparam("pua_dialoginfo", "include_tags", 1) modparam("pua_dialoginfo", "include_localremote", 1) modparam("pua_dialoginfo", "override_lifetime", 300)
#!endif
#!ifdef WITH_NAT # ----- rtpproxy params ----- modparam("rtpproxy", "rtpproxy_sock", "udp:127.0.0.1:7722")
# ----- nathelper params ----- modparam("nathelper", "natping_interval", 30) modparam("nathelper", "ping_nated_only", 1) modparam("nathelper", "sipping_bflag", FLB_NATSIPPING) modparam("nathelper", "sipping_from", "sip:pinger@kamailio.org")
# params needed for NAT traversal in other modules modparam("nathelper|registrar", "received_avp", "$avp(RECEIVED)") modparam("usrloc", "nat_bflag", FLB_NATB) #!endif
#!ifdef WITH_TLS # ----- tls params ----- modparam("tls", "config", "/usr/local/kamailio-4.2/etc/kamailio/tls.cfg") #!endif
#!ifdef WITH_ANTIFLOOD # ----- pike params ----- modparam("pike", "sampling_time_unit", 2) modparam("pike", "reqs_density_per_unit", 16) modparam("pike", "remove_latency", 4)
# ----- htable params ----- # ip ban htable with autoexpire after 5 minutes modparam("htable", "htable", "ipban=>size=8;autoexpire=300;") #!endif
#!ifdef WITH_XMLRPC # ----- xmlrpc params ----- modparam("xmlrpc", "route", "XMLRPC"); modparam("xmlrpc", "url_match", "^/RPC") #!endif
#!ifdef WITH_DEBUG # ----- debugger params ----- modparam("debugger", "cfgtrace", 1) modparam("debugger", "log_level_name", "exec") #!endif
####### Routing Logic ########
# Main SIP request routing logic # - processing of any incoming SIP request starts with this route # - note: this is the same as route { ... } request_route {
# per request initial checks route(REQINIT);
# NAT detection route(NATDETECT);
# CANCEL processing if (is_method("CANCEL")) { if (t_check_trans()) { route(RELAY); } exit; }
# handle requests within SIP dialogs route(WITHINDLG);
### only initial requests (no To tag)
# handle retransmissions if(t_precheck_trans()) { t_check_trans(); exit; } t_check_trans();
# authentication #xlogl("L_INFO","PRISLO $rm z $si,$sp"); #change if($si=="81.31.45.53" && $sp=='5099'){ $var(sipp)=1; }else{ route(AUTH); }
# record routing for dialog forming requests (in case they are routed) # - remove preloaded route headers remove_hf("Route"); if (is_method("INVITE|SUBSCRIBE")) record_route();
# account only INVITEs if (is_method("INVITE")) { setflag(FLT_ACC); # do accounting }
# dispatch requests to foreign domains route(SIPOUT);
### requests for my local domains
# handle presence related requests route(PRESENCE);
# handle registrations route(REGISTRAR);
if ($rU==$null) { # request with no Username in RURI sl_send_reply("484","Address Incomplete"); exit; }
# dispatch destinations to PSTN route(PSTN);
# user location service #change if($var(sipp)==1){ route(RELAY); }else{ route(LOCATION); } }
# Wrapper for relaying requests route[RELAY] { #change if($var(sipp)==1){ $du=$null; $var(sipp)=$null; $rd="81.31.45.53"; $rp=5090; }
#xlogl("L_INFO","START RELAY $rm -- $ci"); # enable additional event routes for forwarded requests # - serial forking, RTP relaying handling, a.s.o. if (is_method("INVITE|BYE|SUBSCRIBE|UPDATE")) { if(!t_is_set("branch_route")) t_on_branch("MANAGE_BRANCH"); } if (is_method("INVITE|SUBSCRIBE|UPDATE")) { if(!t_is_set("onreply_route")) t_on_reply("MANAGE_REPLY"); } if (is_method("INVITE")) { if(!t_is_set("failure_route")) t_on_failure("MANAGE_FAILURE");
$avp(s:pcaller)="sip:"+$fU+"@81.31.45.53:9988"; $avp(s:pcallee)="sip:"+$rU+"@81.31.45.53:9988"; setflag(FLT_PUBLISH); dlg_manage(); #xlogl("L_INFO","START DIALOG - $rm -- $ci -- $avp(s:pcaller)->$avp(s:pcallee)");
}
if (!t_relay()) { sl_reply_error(); } exit; }
# Per SIP request initial checks route[REQINIT] { #!ifdef WITH_ANTIFLOOD # flood dection from same IP and traffic ban for a while # be sure you exclude checking trusted peers, such as pstn gateways # - local host excluded (e.g., loop to self) if(src_ip!=myself) { if($sht(ipban=>$si)!=$null) { # ip is already blocked xdbg("request from blocked IP - $rm from $fu (IP:$si:$sp)\n"); exit; } if (!pike_check_req()) { xlog("L_ALERT","ALERT: pike blocking $rm from $fu (IP:$si:$sp)\n"); $sht(ipban=>$si) = 1; exit; } } if($ua =~ "friendly-scanner") { sl_send_reply("200", "OK"); exit; } #!endif
if (!mf_process_maxfwd_header("10")) { sl_send_reply("483","Too Many Hops"); exit; }
if(is_method("OPTIONS") && uri==myself && $rU==$null) { sl_send_reply("200","Keepalive"); exit; }
if(!sanity_check("1511", "7")) { xlog("Malformed SIP message from $si:$sp\n"); exit; } }
# Handle requests within SIP dialogs route[WITHINDLG] { if (!has_totag()) return;
# sequential request withing a dialog should # take the path determined by record-routing if (loose_route()) { route(DLGURI); if (is_method("BYE")) { setflag(FLT_ACC); # do accounting ... setflag(FLT_ACCFAILED); # ... even if the transaction fails } else if ( is_method("ACK") ) { # ACK is forwarded statelessy route(NATMANAGE); } else if ( is_method("NOTIFY") ) { # Add Record-Route for in-dialog NOTIFY as per RFC 6665. #xlogl("L_INFO","IN DIALOG $rm -- $ci"); record_route(); } route(RELAY); exit; }
if (is_method("SUBSCRIBE") && uri == myself) { # in-dialog subscribe requests route(PRESENCE); exit; } if ( is_method("ACK") ) { if ( t_check_trans() ) { # no loose-route, but stateful ACK; # must be an ACK after a 487 # or e.g. 404 from upstream server route(RELAY); exit; } else { # ACK without matching transaction ... ignore and discard exit; } } sl_send_reply("404","Not here"); exit; }
# Handle SIP registrations route[REGISTRAR] { if (!is_method("REGISTER")) return;
if(isflagset(FLT_NATS)) { setbflag(FLB_NATB); #!ifdef WITH_NATSIPPING # do SIP NAT pinging setbflag(FLB_NATSIPPING); #!endif } if (!save("location")) sl_reply_error(); exit; }
# User location service route[LOCATION] {
#!ifdef WITH_SPEEDDIAL # search for short dialing - 2-digit extension if($rU=~"^[0-9][0-9]$") if(sd_lookup("speed_dial")) route(SIPOUT); #!endif
#!ifdef WITH_ALIASDB # search in DB-based aliases if(alias_db_lookup("dbaliases")) route(SIPOUT); #!endif
$avp(oexten) = $rU; if (!lookup("location")) { $var(rc) = $rc; route(TOVOICEMAIL); t_newtran(); switch ($var(rc)) { case -1: case -3: send_reply("404", "Not Found"); exit; case -2: send_reply("405", "Method Not Allowed"); exit; } }
# when routing via usrloc, log the missed calls also if (is_method("INVITE")) { setflag(FLT_ACCMISSED); }
route(RELAY); exit; }
# Presence server processing route[PRESENCE] { if(!is_method("PUBLISH|SUBSCRIBE")) return;
# if(is_method("SUBSCRIBE") && $hdr(Event)=="message-summary") { # route(TOVOICEMAIL); # returns here if no voicemail server is configured # sl_send_reply("404", "No voicemail service"); # exit; # }
#!ifdef WITH_PRESENCE if (!t_newtran()) { sl_reply_error(); exit; }
#preposlu na presence server $rd="81.31.45.53"; $rp=9988; if(!t_relay_to_udp()){ sl_reply_error(); }
# if(is_method("PUBLISH")) { # handle_publish(); # t_release(); # } else if(is_method("SUBSCRIBE")) { # handle_subscribe(); # t_release(); # } exit; #!endif
# if presence enabled, this part will not be executed if (is_method("PUBLISH") || $rU==$null) { sl_send_reply("404", "Not here"); exit; } return; }
# IP authorization and user uthentication route[AUTH] { #!ifdef WITH_AUTH
#!ifdef WITH_IPAUTH if((!is_method("REGISTER")) && allow_source_address()) { # source IP allowed return; } #!endif
if (is_method("REGISTER") || from_uri==myself) { # authenticate requests if (!auth_check("$fd", "subscriber", "1")) { auth_challenge("$fd", "0"); exit; } # user authenticated - remove auth header if(!is_method("REGISTER|PUBLISH")) consume_credentials(); } # if caller is not local subscriber, then check if it calls # a local destination, otherwise deny, not an open relay here if (from_uri!=myself && uri!=myself) { sl_send_reply("403","Not relaying"); exit; }
#!endif return; }
# Caller NAT detection route[NATDETECT] { #!ifdef WITH_NAT force_rport(); if (nat_uac_test("19")) { if (is_method("REGISTER")) { fix_nated_register(); } else { if(is_first_hop()) set_contact_alias(); } setflag(FLT_NATS); } #!endif return; }
# RTPProxy control and singaling updates for NAT traversal route[NATMANAGE] { #!ifdef WITH_NAT if (is_request()) { if(has_totag()) { if(check_route_param("nat=yes")) { setbflag(FLB_NATB); } } } if (!(isflagset(FLT_NATS) || isbflagset(FLB_NATB))) return;
rtpproxy_manage("co");
if (is_request()) { if (!has_totag()) { if(t_is_branch_route()) { add_rr_param(";nat=yes"); } } } if (is_reply()) { if(isbflagset(FLB_NATB)) { if(is_first_hop()) set_contact_alias(); } } #!endif return; }
# URI update for dialog requests route[DLGURI] { #!ifdef WITH_NAT if(!isdsturiset()) { handle_ruri_alias(); } #!endif return; }
# Routing to foreign domains route[SIPOUT] { if (uri==myself) return;
append_hf("P-hint: outbound\r\n"); route(RELAY); exit; }
# PSTN GW routing route[PSTN] { #!ifdef WITH_PSTN # check if PSTN GW IP is defined if (strempty($sel(cfg_get.pstn.gw_ip))) { xlog("SCRIPT: PSTN rotuing enabled but pstn.gw_ip not defined\n"); return; }
# route to PSTN dialed numbers starting with '+' or '00' # (international format) # - update the condition to match your dialing rules for PSTN routing if(!($rU=~"^(+|00)[1-9][0-9]{3,20}$")) return;
# only local users allowed to call if(from_uri!=myself) { sl_send_reply("403", "Not Allowed"); exit; }
if (strempty($sel(cfg_get.pstn.gw_port))) { $ru = "sip:" + $rU + "@" + $sel(cfg_get.pstn.gw_ip); } else { $ru = "sip:" + $rU + "@" + $sel(cfg_get.pstn.gw_ip) + ":" + $sel(cfg_get.pstn.gw_port); }
route(RELAY); exit; #!endif
return; }
# XMLRPC routing #!ifdef WITH_XMLRPC route[XMLRPC] { # allow XMLRPC from localhost if ((method=="POST" || method=="GET") && (src_ip==127.0.0.1)) { # close connection only for xmlrpclib user agents (there is a bug in # xmlrpclib: it waits for EOF before interpreting the response). if ($hdr(User-Agent) =~ "xmlrpclib") set_reply_close(); set_reply_no_connect(); dispatch_rpc(); exit; } send_reply("403", "Forbidden"); exit; } #!endif
# Routing to voicemail server route[TOVOICEMAIL] { #!ifdef WITH_VOICEMAIL if(!is_method("INVITE|SUBSCRIBE")) return;
# check if VoiceMail server IP is defined if (strempty($sel(cfg_get.voicemail.srv_ip))) { xlog("SCRIPT: VoiceMail rotuing enabled but IP not defined\n"); return; } if(is_method("INVITE")) { if($avp(oexten)==$null) return; $ru = "sip:" + $avp(oexten) + "@" + $sel(cfg_get.voicemail.srv_ip) + ":" + $sel(cfg_get.voicemail.srv_port); } else { if($rU==$null) return; $ru = "sip:" + $rU + "@" + $sel(cfg_get.voicemail.srv_ip) + ":" + $sel(cfg_get.voicemail.srv_port); } route(RELAY); exit; #!endif
return; }
# Manage outgoing branches branch_route[MANAGE_BRANCH] { xdbg("new branch [$T_branch_idx] to $ru\n"); route(NATMANAGE); }
# Manage incoming replies onreply_route[MANAGE_REPLY] { xdbg("incoming reply\n"); if(status=~"[12][0-9][0-9]") route(NATMANAGE); }
# Manage failure routing cases failure_route[MANAGE_FAILURE] { route(NATMANAGE);
if (t_is_canceled()) { exit; }
#!ifdef WITH_BLOCK3XX # block call redirect based on 3xx replies. if (t_check_status("3[0-9][0-9]")) { t_reply("404","Not found"); exit; } #!endif
#!ifdef WITH_VOICEMAIL # serial forking # - route to voicemail on busy or no answer (timeout) if (t_check_status("486|408")) { $du = $null; route(TOVOICEMAIL); exit; } #!endif } ```
### Kamailio presence server ``` #!KAMAILIO # # Kamailio (OpenSER) SIP Server v4.3 - default configuration script # - web: http://www.kamailio.org # - git: http://sip-router.org # #!define WITH_MYSQL #!define WITH_PRESENCE
#!ifdef WITH_MYSQL # - database URL - used to connect to database server by modules such # as: auth_db, acc, usrloc, a.s.o. #!ifndef DBURL #!define DBURL "mysql://root:root@localhost/presence" #!endif #!endif
####### Global Parameters #########
### LOG Levels: 3=DBG, 2=INFO, 1=NOTICE, 0=WARN, -1=ERR #!ifdef WITH_DEBUG debug=4 log_stderror=yes #!else debug=2 log_stderror=no #!endif
memdbg=5 memlog=5
log_facility=LOG_LOCAL0
fork=yes children=4
listen=udp:81.31.45.53:9988
mpath="/usr/local/kamailio-dev/lib64/kamailio/modules/" #!ifdef WITH_MYSQL loadmodule "db_mysql.so" #!endif loadmodule "mi_fifo.so" loadmodule "kex.so" loadmodule "corex.so" loadmodule "tm.so" loadmodule "tmx.so" loadmodule "sl.so" loadmodule "rr.so" loadmodule "pv.so" loadmodule "maxfwd.so" loadmodule "textops.so" loadmodule "siputils.so" loadmodule "xlog.so" loadmodule "sanity.so" loadmodule "ctl.so" loadmodule "cfg_rpc.so" loadmodule "mi_rpc.so"
#!ifdef WITH_PRESENCE loadmodule "presence.so" loadmodule "presence_xml.so" loadmodule "presence_dialoginfo.so" #!endif
modparam("xlog", "buf_size", 8192) modparam("xlog", "force_color", 0) modparam("xlog", "prefix", "") modparam("xlog", "long_format", 0)
# ----------------- setting module-specific parameters ---------------
# ----- mi_fifo params ----- modparam("mi_fifo", "fifo_name", "/var/run/kamailio_dev/kamailio_fifo")
# ----- ctl params ----- modparam("ctl", "binrpc", "unix:/var/run/kamailio_dev/kamailio_ctl")
# ----- tm params ----- # auto-discard branches from previous serial forking leg modparam("tm", "failure_reply_mode", 3) # default retransmission timeout: 30sec modparam("tm", "fr_timer", 30000) # default invite retransmission timeout after 1xx: 120sec modparam("tm", "fr_inv_timer", 120000)
# ----- rr params ----- # set next param to 1 to add value to ;lr param (helps with some UAs) modparam("rr", "enable_full_lr", 0) # do not append from tag to the RR (no need for this script) modparam("rr", "append_fromtag", 0)
#!ifdef WITH_PRESENCE # ----- presence params ----- modparam("presence", "db_url", DBURL) modparam("presence", "server_address", "sip:81.31.45.53:9988") #modparam("presence", "enable_sphere_check", 1) modparam("presence", "local_log_level", 3) #modparam("presence", "subs_remove_match", 1) #modparam("presence", "retrieve_order", 1) #modparam("presence", "sip_uri_match", 1)
#modparam("presence", "subs_db_mode", 0)
# ----- presence_xml params ----- modparam("presence_xml", "db_url", DBURL) modparam("presence_xml", "force_active", 1) modparam("presence_dialoginfo", "force_single_dialog", 1) modparam("presence_dialoginfo", "force_dummy_dialog", 1) #!endif
####### Routing Logic ########
# Main SIP request routing logic # - processing of any incoming SIP request starts with this route # - note: this is the same as route { ... } request_route {
# per request initial checks route(REQINIT);
# handle presence related requests route(PRESENCE);
exit; }
# Per SIP request initial checks route[REQINIT] { if (!mf_process_maxfwd_header("10")) { sl_send_reply("483","Too Many Hops"); exit; }
if(!sanity_check("1511", "7")) { xlog("Malformed SIP message from $si:$sp\n"); exit; } }
# Presence server processing route[PRESENCE] { if(!is_method("PUBLISH|SUBSCRIBE")) return;
if (!t_newtran()) { sl_reply_error(); exit; }
#xlogl("L_INFO","PRES $ci $rm"); if(is_method("PUBLISH")) { handle_publish(); t_release(); } else if(is_method("SUBSCRIBE")) { handle_subscribe(); t_release(); } exit; } ```
### Sipp uas #### sipp -sf uas.xml 81.31.45.53 -p 5090 -trace_err ``` <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE scenario SYSTEM "sipp.dtd">
<!-- This program is free software; you can redistribute it and/or --> <!-- modify it under the terms of the GNU General Public License as --> <!-- published by the Free Software Foundation; either version 2 of the --> <!-- License, or (at your option) any later version. --> <!-- --> <!-- This program is distributed in the hope that it will be useful, --> <!-- but WITHOUT ANY WARRANTY; without even the implied warranty of --> <!-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --> <!-- GNU General Public License for more details. --> <!-- --> <!-- You should have received a copy of the GNU General Public License --> <!-- along with this program; if not, write to the --> <!-- Free Software Foundation, Inc., --> <!-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA --> <!-- --> <!-- Sipp default 'uas' scenario. --> <!-- -->
<scenario name="Basic UAS responder"> <!-- By adding rrs="true" (Record Route Sets), the route sets --> <!-- are saved and used for following messages sent. Useful to test --> <!-- against stateful SIP proxies/B2BUAs. --> <recv request="INVITE" crlf="true" rrs="true"> </recv>
<!-- The '[last_*]' keyword is replaced automatically by the --> <!-- specified header if it was present in the last message received --> <!-- (except if it was a retransmission). If the header was not --> <!-- present or if no message has been received, the '[last_*]' --> <!-- keyword is discarded, and all bytes until the end of the line --> <!-- are also discarded. --> <!-- --> <!-- If the specified header was present several times in the --> <!-- message, all occurences are concatenated (CRLF separated) --> <!-- to be used in place of the '[last_*]' keyword. Record-[routes] -->
<send rrs="true"> <![CDATA[
SIP/2.0 180 Ringing [last_Via:] Record-[routes] [last_From:] [last_To:];tag=[pid]SIPpTag01[call_number] [last_Call-ID:] [last_CSeq:] Contact: sip:[call_number]@[local_ip]:[local_port];transport=[transport] Content-Length: 0
]]> </send>
<pause milliseconds = "1000"/> <!-- --> <send retrans="500" rrs="true"> <![CDATA[
SIP/2.0 200 OK [last_Via:] Record-[routes] [last_From:] [last_To:];tag=[pid]SIPpTag01[call_number] [last_Call-ID:] [last_CSeq:] Contact: sip:[call_number]@[local_ip]:[local_port];transport=[transport] Content-Type: application/sdp Content-Length: [len]
v=0 o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] s=- c=IN IP[media_ip_type] [media_ip] t=0 0 m=audio [media_port] RTP/AVP 8 a=rtpmap:8 PCMA/8000
]]> </send>
<!-- <nop> <action> <exec play_pcap_audio="/root/sipp/g711a.pcap"/> </action> </nop> --> <recv request="ACK" optional="true" rtd="true" crlf="true" rrs="true"> </recv>
<recv request="BYE" rrs="true"> </recv>
<send rrs="true"> <![CDATA[
SIP/2.0 200 OK [last_Via:] [last_From:] [last_To:] [last_Call-ID:] [last_CSeq:] Contact: sip:[call_number]@[local_ip]:[local_port];transport=[transport] Content-Length: 0
]]> </send>
<!-- Keep the call open for a while in case the 200 is lost to be --> <!-- able to retransmit it if we receive the BYE again.
<timewait milliseconds="1000"/>
<timewait milliseconds="500"/> --> <!-- definition of the response time repartition table (unit is ms) --> <ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200"/>
<!-- definition of the call length repartition table (unit is ms) --> <CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/>
</scenario> ```
### Sipp UAC #### sipp -sf ./uac.xml -p 5099 -s uas -r 1 -rp 1000 -m 10000 81.31.45.53:6688 -trace_err -inf ./inf3.csv ``` <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE scenario SYSTEM "sipp.dtd">
<!-- This program is free software; you can redistribute it and/or --> <!-- modify it under the terms of the GNU General Public License as --> <!-- published by the Free Software Foundation; either version 2 of the --> <!-- License, or (at your option) any later version. --> <!-- --> <!-- This program is distributed in the hope that it will be useful, --> <!-- but WITHOUT ANY WARRANTY; without even the implied warranty of --> <!-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --> <!-- GNU General Public License for more details. --> <!-- --> <!-- You should have received a copy of the GNU General Public License --> <!-- along with this program; if not, write to the --> <!-- Free Software Foundation, Inc., --> <!-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA --> <!-- --> <!-- Sipp default 'uac' scenario. --> <!-- -->
<scenario name="Basic Sipstone UAC"> <!-- In client mode (sipp placing calls), the Call-ID MUST be --> <!-- generated by sipp. To do so, use [call_id] keyword. Diversion: <tel:0042910116106> --> <send retrans="500"> <![CDATA[
INVITE sip:[field1]@[remote_ip]:[remote_port] SIP/2.0 Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch] From: [field] sip:[field0]@[local_ip]:[local_port];tag=[pid]SIPpTag00[call_number] To: [field1] sip:[field1]@[remote_ip]:[remote_port] Call-ID: [call_id] CSeq: 1 INVITE Contact: sip:[field0]@[local_ip]:[local_port] Max-Forwards: 70 Content-Type: application/sdp Content-Length: [len]
v=0 o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] s=- c=IN IP[media_ip_type] [media_ip] t=0 0 m=audio [media_port] RTP/AVP 8 a=rtpmap:8 PCMA/8000
]]> </send>
<recv response="100" optional="true"> </recv>
<recv response="180" optional="true" rrs="true"> </recv>
<recv response="183" optional="true" rrs="true"> </recv>
<!-- By adding rrs="true" (Record Route Sets), the route sets --> <!-- are saved and used for following messages sent. Useful to test --> <!-- against stateful SIP proxies/B2BUAs. --> <recv response="200" rtd="true" rrs="true"> </recv>
<!-- Packet lost can be simulated in any send/recv message by --> <!-- by adding the 'lost = "10"'. Value can be [1-100] percent. [routes] --> <!-- Contact: sip:sipp@[local_ip]:[local_port] sip:[field1]@[remote_ip]:[remote_port] --> <send rrs="true"> <![CDATA[
ACK [next_url] SIP/2.0 Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch] [routes] From: [field0] sip:[field0]@[local_ip]:[local_port];tag=[pid]SIPpTag00[call_number] To: [field1] sip:[field1]@[remote_ip]:[remote_port][peer_tag_param] Call-ID: [call_id] CSeq: 1 ACK Contact: sip:[field0]@[local_ip]:[local_port] Max-Forwards: 70 Content-Length: 0
]]> </send>
<pause milliseconds = "1000"/> <!-- --> <!-- This delay can be customized by the -d command-line option --> <!-- or by adding a 'milliseconds = "value"' option here. -->
<!-- The 'crlf' option inserts a blank line in the statistics report. [routes] --> <send retrans="500" rrs="true"> <![CDATA[
BYE [next_url] SIP/2.0 Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch] [routes] From: [field0] sip:[field0]@[local_ip]:[local_port];tag=[pid]SIPpTag00[call_number] To: [field1] sip:[field1]@[remote_ip]:[remote_port][peer_tag_param] Call-ID: [call_id] CSeq: 2 BYE Contact: sip:[field0]@[local_ip]:[local_port] Max-Forwards: 70 Subject: Performance Test Content-Length: 0
]]> </send>
<recv response="200" crlf="true" rrs="true"> </recv>
<!-- definition of the response time repartition table (unit is ms) --> <ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200"/>
<!-- definition of the call length repartition table (unit is ms) --> <CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/>
</scenario> ```
### inf3.csv ``` SEQUENTIAL 1;2 2;3 3;4 4;5 5;6 6;7 7;8 8;9 9;10 10;11 11;12 12;24 24;23 23;22 22;21 21;20 20;19 19;18 18;17 17;16 16;15 15;14 14;13 13;1 ``` ### count_mem.sh ``` #!/bin/bash free echo "----------------------------------------" echo "Presence Kbytes RSS Dirty" #pmap -x $(cat /var/run/kamailio_dev/kamailio_dev.pid)|grep total for line in $(pgrep -f '/usr/local/kamailio-dev/sbin/kamailio -f /usr/local/kamailio-dev/etc/kamailio/kamailio.cfg -P /var/run/kamailio_dev/kamailio_dev.pid -m 16 -M 8 -u root -g root') do pms=$(pmap -x $line|grep total) echo "$pms pid:$line" done
echo "----------------------------------------" echo "Main proxy Kbytes RSS Dirty" for line in $(pgrep -f '/usr/local/kamailio-4.2/sbin/kamailio -f /usr/local/kamailio-4.2/etc/kamailio/kamailio.cfg -P /var/run/kamailio_stable/kamailio_stable.pid -m 16 -M 8 -u root -g root') do pms=$(pmap -x $line|grep total) echo "$pms pid:$line" done echo "----------------------------------------" ```
### /usr/local/kamailio-dev/sbin/kamailio -v ``` version: kamailio 4.3.0-pre1 (x86_64/linux) b2260d-dirty flags: STATS: Off, USE_TCP, USE_TLS, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MEM, SHM_MMAP, PKG_MALLOC, F_MALLOC, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLACKLIST, HAVE_RESOLV_RES ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144, MAX_LISTEN 16, MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB poll method support: poll, epoll_lt, epoll_et, sigio_rt, select. id: b2260d -dirty compiled on 13:25:10 May 7 2015 with gcc 4.7.2 ``` ### /usr/local/kamailio-4.2/sbin/kamailio -v ``` version: kamailio 4.2.4 (x86_64/linux) 97f1ee flags: STATS: Off, USE_TCP, USE_TLS, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MEM, SHM_MMAP, PKG_MALLOC, F_MALLOC, DBG_F_MALLOC, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLACKLIST, HAVE_RESOLV_RES ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144, MAX_LISTEN 16, MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB poll method support: poll, epoll_lt, epoll_et, sigio_rt, select. id: 97f1ee compiled on 12:01:12 May 5 2015 with gcc 4.7.2 ```
### uname -a ``` Linux blftest 2.6.32-042stab078.27 #1 SMP Mon Jul 1 20:48:07 MSK 2013 x86_64 GNU/Linux ```
Thanks.
--- Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/issues/155
Given that the module uses libxml2, the leak could be that some xml trees are not freed.
What were the symptoms when it stopped working?
Did you get any error messages in syslog?
--- Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/issues/155#issuecomment-100798492
GXP2160 stop BLF blink. and all screen windows on server is message like this: ``` Message from syslogd@blftest at May 11 12:39:02 ... t of memory [8300] ``` In log: ``` May 11 12:43:30 blftest /usr/local/kamailio-dev/sbin/kamailio[8299]: ERROR: presence [notify.c:664]: get_p_notify_body(): failed to query presentity table May 11 12:43:30 blftest /usr/local/kamailio-dev/sbin/kamailio[8299]: ERROR: presence_dialoginfo [notify_body.c:530]: dlginfo_body_setversion(): body string too short! May 11 12:43:30 blftest /usr/local/kamailio-dev/sbin/kamailio[8301]: ERROR: db_mysql [km_dbase.c:238]: db_mysql_store_result(): driver error: MySQL client ran out of memory May 11 12:43:30 blftest /usr/local/kamailio-dev/sbin/kamailio[8301]: ERROR: <core> [db_query.c:137]: db_do_query_internal(): error while storing result May 11 12:43:30 blftest /usr/local/kamailio-dev/sbin/kamailio[8301]: ERROR: presence [notify.c:664]: get_p_notify_body(): failed to query presentity table May 11 12:43:30 blftest /usr/local/kamailio-dev/sbin/kamailio[8300]: ERROR: db_mysql [km_dbase.c:238]: db_mysql_store_result(): driver error: MySQL client ran out of memory May 11 12:43:30 blftest /usr/local/kamailio-dev/sbin/kamailio[8300]: ERROR: <core> [db_query.c:137]: db_do_query_internal(): error while storing result May 11 12:43:30 blftest /usr/local/kamailio-dev/sbin/kamailio[8300]: ERROR: presence [notify.c:664]: get_p_notify_body(): failed to query presentity table May 11 12:43:30 blftest /usr/local/kamailio-dev/sbin/kamailio[8300]: ERROR: presence_dialoginfo [notify_body.c:530]: dlginfo_body_setversion(): body string too short! May 11 12:43:30 blftest /usr/local/kamailio-dev/sbin/kamailio[8301]: ERROR: presence_dialoginfo [notify_body.c:530]: dlginfo_body_setversion(): body string too short! May 11 12:43:30 blftest /usr/local/kamailio-dev/sbin/kamailio[8300]: ERROR: db_mysql [km_dbase.c:238]: db_mysql_store_result(): driver error: MySQL client ran out of memory May 11 12:43:30 blftest /usr/local/kamailio-dev/sbin/kamailio[8300]: ERROR: <core> [db_query.c:137]: db_do_query_internal(): error while storing result May 11 12:43:30 blftest /usr/local/kamailio-dev/sbin/kamailio[8300]: ERROR: presence [notify.c:664]: get_p_notify_body(): failed to query presentity table May 11 12:43:30 blftest /usr/local/kamailio-dev/sbin/kamailio[8300]: ERROR: presence_dialoginfo [notify_body.c:530]: dlginfo_body_setversion(): body string too short! May 11 12:43:30 blftest /usr/local/kamailio-dev/sbin/kamailio[8299]: ERROR: db_mysql [km_dbase.c:238]: db_mysql_store_result(): driver error: MySQL client ran out of memory May 11 12:43:30 blftest /usr/local/kamailio-dev/sbin/kamailio[8299]: ERROR: <core> [db_query.c:137]: db_do_query_internal(): error while storing result May 11 12:43:30 blftest /usr/local/kamailio-dev/sbin/kamailio[8299]: ERROR: presence [notify.c:664]: get_p_notify_body(): failed to query presentity table May 11 12:43:30 blftest /usr/local/kamailio-dev/sbin/kamailio[8299]: ERROR: presence_dialoginfo [notify_body.c:530]: dlginfo_body_setversion(): body string too short! May 11 12:43:30 blftest /usr/local/kamailio-dev/sbin/kamailio[8301]: ERROR: db_mysql [km_dbase.c:238]: db_mysql_store_result(): driver error: MySQL client ran out of memory May 11 12:43:30 blftest /usr/local/kamailio-dev/sbin/kamailio[8301]: ERROR: <core> [db_query.c:137]: db_do_query_internal(): error while storing result May 11 12:43:30 blftest /usr/local/kamailio-dev/sbin/kamailio[8301]: ERROR: presence [notify.c:664]: get_p_notify_body(): failed to query presentity table May 11 12:43:30 blftest /usr/local/kamailio-dev/sbin/kamailio[8301]: ERROR: presence_dialoginfo [notify_body.c:530]: dlginfo_body_setversion(): body string too short! May 11 12:43:45 blftest /usr/local/kamailio-dev/sbin/kamailio[8302]: ERROR: db_mysql [km_dbase.c:121]: db_mysql_submit_query(): driver error on query: Lost connection to MySQL server during query May 11 12:43:45 blftest /usr/local/kamailio-dev/sbin/kamailio[8302]: ERROR: <core> [db_query.c:289]: db_do_delete(): error while submitting query May 11 12:43:45 blftest /usr/local/kamailio-dev/sbin/kamailio[8302]: ERROR: presence [publish.c:225]: msg_presentity_clean(): failed to delete expired records from DB May 11 12:44:26 blftest /usr/local/kamailio-dev/sbin/kamailio[8302]: ERROR: db_mysql [km_dbase.c:121]: db_mysql_submit_query(): driver error on query: Can't create a new thread (errno 11); if you are not out of available memory, you can consult the manual for a possible OS-dependent bug May 11 12:44:26 blftest /usr/local/kamailio-dev/sbin/kamailio[8302]: ERROR: <core> [db_query.c:335]: db_do_update(): error while submitting query May 11 12:44:26 blftest /usr/local/kamailio-dev/sbin/kamailio[8302]: ERROR: presence [subscribe.c:2251]: update_db_subs_timer(): updating in database May 11 12:44:26 blftest /usr/local/kamailio-dev/sbin/kamailio[8302]: ERROR: db_mysql [km_dbase.c:121]: db_mysql_submit_query(): driver error on query: Can't create a new thread (errno 11); if you are not out of available memory, you can consult the manual for a possible OS-dependent bug May 11 12:44:26 blftest /usr/local/kamailio-dev/sbin/kamailio[8302]: ERROR: <core> [db_query.c:335]: db_do_update(): error while submitting query May 11 12:44:26 blftest /usr/local/kamailio-dev/sbin/kamailio[8302]: ERROR: presence [subscribe.c:2251]: update_db_subs_timer(): updating in database May 11 12:44:26 blftest /usr/local/kamailio-dev/sbin/kamailio[8302]: ERROR: db_mysql [km_dbase.c:121]: db_mysql_submit_query(): driver error on query: Can't create a new thread (errno 11); if you are not out of available memory, you can consult the manual for a possible OS-dependent bug May 11 12:44:26 blftest /usr/local/kamailio-dev/sbin/kamailio[8302]: ERROR: <core> [db_query.c:335]: db_do_update(): error while submitting query May 11 12:44:26 blftest /usr/local/kamailio-dev/sbin/kamailio[8302]: ERROR: presence [subscribe.c:2251]: update_db_subs_timer(): updating in database May 11 12:44:26 blftest /usr/local/kamailio-dev/sbin/kamailio[8302]: ERROR: db_mysql [km_dbase.c:121]: db_mysql_submit_query(): driver error on query: Can't create a new thread (errno 11); if you are not out of available memory, you can consult the manual for a possible OS-dependent bug May 11 12:44:26 blftest /usr/local/kamailio-dev/sbin/kamailio[8302]: ERROR: <core> [db_query.c:335]: db_do_update(): error while submitting query May 11 12:44:26 blftest /usr/local/kamailio-dev/sbin/kamailio[8302]: ERROR: presence [subscribe.c:2251]: update_db_subs_timer(): updating in database May 11 12:44:26 blftest /usr/local/kamailio-dev/sbin/kamailio[8302]: ERROR: db_mysql [km_dbase.c:121]: db_mysql_submit_query(): driver error on query: Can't create a new thread (errno 11); if you are not out of available memory, you can consult the manual for a possible OS-dependent bug May 11 12:44:26 blftest /usr/local/kamailio-dev/sbin/kamailio[8302]: ERROR: <core> [db_query.c:335]: db_do_update(): error while submitting query May 11 12:44:26 blftest /usr/local/kamailio-dev/sbin/kamailio[8302]: ERROR: presence [subscribe.c:2251]: update_db_subs_timer(): updating in database May 11 12:44:26 blftest /usr/local/kamailio-dev/sbin/kamailio[8302]: ERROR: db_mysql [km_dbase.c:121]: db_mysql_submit_query(): driver error on query: Can't create a new thread (errno 11); if you are not out of available memory, you can consult the manual for a possible OS-dependent bug May 11 12:44:26 blftest /usr/local/kamailio-dev/sbin/kamailio[8302]: ERROR: <core> [db_query.c:335]: db_do_update(): error while submitting query May 11 12:44:26 blftest /usr/local/kamailio-dev/sbin/kamailio[8302]: ERROR: presence [subscribe.c:2251]: update_db_subs_timer(): updating in database May 11 12:44:26 blftest /usr/local/kamailio-dev/sbin/kamailio[8302]: ERROR: db_mysql [km_dbase.c:121]: db_mysql_submit_query(): driver error on query: Can't create a new thread (errno 11); if you are not out of available memory, you can consult the manual for a possible OS-dependent bug May 11 12:44:26 blftest /usr/local/kamailio-dev/sbin/kamailio[8302]: ERROR: <core> [db_query.c:335]: db_do_update(): error while submitting query May 11 12:44:26 blftest /usr/local/kamailio-dev/sbin/kamailio[8302]: ERROR: presence [subscribe.c:2251]: update_db_subs_timer(): updating in database May 11 12:44:26 blftest /usr/local/kamailio-dev/sbin/kamailio[8302]: ERROR: db_mysql [km_dbase.c:121]: db_mysql_submit_query(): driver error on query: Can't create a new thread (errno 11); if you are not out of available memory, you can consult the manual for a possible OS-dependent bug May 11 12:44:26 blftest /usr/local/kamailio-dev/sbin/kamailio[8302]: ERROR: <core> [db_query.c:335]: db_do_update(): error while submitting query May 11 12:44:26 blftest /usr/local/kamailio-dev/sbin/kamailio[8302]: ERROR: presence [subscribe.c:2251]: update_db_subs_timer(): updating in database May 11 12:44:26 blftest /usr/local/kamailio-dev/sbin/kamailio[8302]: ERROR: db_mysql [km_dbase.c:121]: db_mysql_submit_query(): driver error on query: Can't create a new thread (errno 11); if you are not out of available memory, you can consult the manual for a possible OS-dependent bug May 11 12:44:26 blftest /usr/local/kamailio-dev/sbin/kamailio[8302]: ERROR: <core> [db_query.c:335]: db_do_update(): error while submitting query May 11 12:44:26 blftest /usr/local/kamailio-dev/sbin/kamailio[8302]: ERROR: presence [subscribe.c:2251]: update_db_subs_timer(): updating in database May 11 12:44:26 blftest /usr/local/kamailio-dev/sbin/kamailio[8302]: ERROR: db_mysql [km_dbase.c:121]: db_mysql_submit_query(): driver error on query: Can't create a new thread (errno 11); if you are not out of available memory, you can consult the manual for a possible OS-dependent bug May 11 12:44:26 blftest /usr/local/kamailio-dev/sbin/kamailio[8302]: ERROR: <core> [db_query.c:335]: db_do_update(): error while submitting query May 11 12:44:26 blftest /usr/local/kamailio-dev/sbin/kamailio[8302]: ERROR: presence [subscribe.c:2251]: update_db_subs_timer(): updating in database May 11 12:45:04 blftest /usr/local/kamailio-dev/sbin/kamailio[8301]: ERROR: db_mysql [km_dbase.c:121]: db_mysql_submit_query(): driver error on query: Can't create a new thread (errno 11); if you are not out of available memory, you can consult the manual for a possible OS-dependent bug May 11 12:45:04 blftest /usr/local/kamailio-dev/sbin/kamailio[8301]: ERROR: <core> [db_query.c:335]: db_do_update(): error while submitting query May 11 12:45:04 blftest /usr/local/kamailio-dev/sbin/kamailio[8301]: ERROR: presence [presentity.c:774]: update_presentity(): updating published info in database May 11 12:45:04 blftest /usr/local/kamailio-dev/sbin/kamailio[8301]: ERROR: presence [publish.c:462]: handle_publish(): when updating presentity May 11 12:45:05 blftest /usr/local/kamailio-dev/sbin/kamailio[8301]: ERROR: db_mysql [km_dbase.c:238]: db_mysql_store_result(): driver error: MySQL client ran out of memory May 11 12:45:05 blftest /usr/local/kamailio-dev/sbin/kamailio[8301]: ERROR: <core> [db_query.c:137]: db_do_query_internal(): error while storing result May 11 12:45:05 blftest /usr/local/kamailio-dev/sbin/kamailio[8301]: ERROR: presence [notify.c:664]: get_p_notify_body(): failed to query presentity table May 11 12:45:05 blftest /usr/local/kamailio-dev/sbin/kamailio[8299]: ERROR: db_mysql [km_dbase.c:238]: db_mysql_store_result(): driver error: MySQL client ran out of memory May 11 12:45:05 blftest /usr/local/kamailio-dev/sbin/kamailio[8299]: ERROR: <core> [db_query.c:137]: db_do_query_internal(): error while storing result May 11 12:45:05 blftest /usr/local/kamailio-dev/sbin/kamailio[8299]: ERROR: presence [notify.c:664]: get_p_notify_body(): failed to query presentity table May 11 12:45:05 blftest /usr/local/kamailio-dev/sbin/kamailio[8299]: ERROR: presence_dialoginfo [notify_body.c:530]: dlginfo_body_setversion(): body string too short! May 11 12:45:05 blftest /usr/local/kamailio-dev/sbin/kamailio[8301]: ERROR: presence_dialoginfo [notify_body.c:530]: dlginfo_body_setversion(): body string too short! May 11 12:45:05 blftest /usr/local/kamailio-dev/sbin/kamailio[8300]: ERROR: db_mysql [km_dbase.c:238]: db_mysql_store_result(): driver error: MySQL client ran out of memory May 11 12:45:05 blftest /usr/local/kamailio-dev/sbin/kamailio[8300]: ERROR: <core> [db_query.c:137]: db_do_query_internal(): error while storing result May 11 12:45:05 blftest /usr/local/kamailio-dev/sbin/kamailio[8300]: ERROR: presence [notify.c:664]: get_p_notify_body(): failed to query presentity table May 11 12:45:05 blftest /usr/local/kamailio-dev/sbin/kamailio[8300]: ERROR: presence_dialoginfo [notify_body.c:530]: dlginfo_body_setversion(): body string too short! May 11 12:45:05 blftest /usr/local/kamailio-dev/sbin/kamailio[8299]: ERROR: db_mysql [km_dbase.c:238]: db_mysql_store_result(): driver error: MySQL client ran out of memory May 11 12:45:05 blftest /usr/local/kamailio-dev/sbin/kamailio[8299]: ERROR: <core> [db_query.c:137]: db_do_query_internal(): error while storing result May 11 12:45:05 blftest /usr/local/kamailio-dev/sbin/kamailio[8299]: ERROR: presence [notify.c:664]: get_p_notify_body(): failed to query presentity table May 11 12:45:05 blftest /usr/local/kamailio-dev/sbin/kamailio[8299]: ERROR: presence_dialoginfo [notify_body.c:530]: dlginfo_body_setversion(): body string too short! May 11 12:45:05 blftest /usr/local/kamailio-dev/sbin/kamailio[8300]: ERROR: db_mysql [km_dbase.c:238]: db_mysql_store_result(): driver error: MySQL client ran out of memory May 11 12:45:05 blftest /usr/local/kamailio-dev/sbin/kamailio[8300]: ERROR: <core> [db_query.c:137]: db_do_query_internal(): error while storing result May 11 12:45:05 blftest /usr/local/kamailio-dev/sbin/kamailio[8300]: ERROR: presence [notify.c:664]: get_p_notify_body(): failed to query presentity table May 11 12:45:05 blftest /usr/local/kamailio-dev/sbin/kamailio[8300]: ERROR: presence_dialoginfo [notify_body.c:530]: dlginfo_body_setversion(): body string too short! May 11 12:46:39 blftest /usr/local/kamailio-dev/sbin/kamailio[8301]: ERROR: db_mysql [km_dbase.c:238]: db_mysql_store_result(): driver error: MySQL client ran out of memory May 11 12:46:39 blftest /usr/local/kamailio-dev/sbin/kamailio[8301]: ERROR: <core> [db_query.c:137]: db_do_query_internal(): error while storing result May 11 12:46:39 blftest /usr/local/kamailio-dev/sbin/kamailio[8301]: ERROR: presence [notify.c:664]: get_p_notify_body(): failed to query presentity table May 11 12:46:39 blftest /usr/local/kamailio-dev/sbin/kamailio[8301]: ERROR: presence_dialoginfo [notify_body.c:530]: dlginfo_body_setversion(): body string too short! May 11 12:46:40 blftest /usr/local/kamailio-dev/sbin/kamailio[8300]: ERROR: db_mysql [km_dbase.c:238]: db_mysql_store_result(): driver error: MySQL client ran out of memory May 11 12:46:40 blftest /usr/local/kamailio-dev/sbin/kamailio[8300]: ERROR: <core> [db_query.c:137]: db_do_query_internal(): error while storing result May 11 12:46:40 blftest /usr/local/kamailio-dev/sbin/kamailio[8300]: ERROR: presence [notify.c:664]: get_p_notify_body(): failed to query presentity table May 11 12:46:40 blftest /usr/local/kamailio-dev/sbin/kamailio[8300]: ERROR: presence_dialoginfo [notify_body.c:530]: dlginfo_body_setversion(): body string too short! May 11 12:46:40 blftest /usr/local/kamailio-dev/sbin/kamailio[8299]: ERROR: db_mysql [km_dbase.c:238]: db_mysql_store_result(): driver error: MySQL client ran out of memory May 11 12:46:40 blftest /usr/local/kamailio-dev/sbin/kamailio[8299]: ERROR: <core> [db_query.c:137]: db_do_query_internal(): error while storing result May 11 12:46:40 blftest /usr/local/kamailio-dev/sbin/kamailio[8299]: ERROR: presence [notify.c:664]: get_p_notify_body(): failed to query presentity table May 11 12:46:40 blftest /usr/local/kamailio-dev/sbin/kamailio[8299]: ERROR: presence_dialoginfo [notify_body.c:530]: dlginfo_body_setversion(): body string too short! May 11 12:46:40 blftest /usr/local/kamailio-dev/sbin/kamailio[8301]: ERROR: db_mysql [km_dbase.c:238]: db_mysql_store_result(): driver error: MySQL client ran out of memory May 11 12:46:40 blftest /usr/local/kamailio-dev/sbin/kamailio[8301]: ERROR: <core> [db_query.c:137]: db_do_query_internal(): error while storing result May 11 12:46:40 blftest /usr/local/kamailio-dev/sbin/kamailio[8301]: ERROR: presence [notify.c:664]: get_p_notify_body(): failed to query presentity table May 11 12:46:40 blftest /usr/local/kamailio-dev/sbin/kamailio[8301]: ERROR: presence_dialoginfo [notify_body.c:530]: dlginfo_body_setversion(): body string too short! May 11 12:46:40 blftest /usr/local/kamailio-dev/sbin/kamailio[8300]: ERROR: db_mysql [km_dbase.c:238]: db_mysql_store_result(): driver error: MySQL client ran out of memory May 11 12:46:40 blftest /usr/local/kamailio-dev/sbin/kamailio[8300]: ERROR: <core> [db_query.c:137]: db_do_query_internal(): error while storing result May 11 12:46:40 blftest /usr/local/kamailio-dev/sbin/kamailio[8300]: ERROR: presence [notify.c:664]: get_p_notify_body(): failed to query presentity table May 11 12:46:40 blftest /usr/local/kamailio-dev/sbin/kamailio[8300]: ERROR: presence_dialoginfo [notify_body.c:530]: dlginfo_body_setversion(): body string too short! May 11 12:46:40 blftest /usr/local/kamailio-dev/sbin/kamailio[8299]: ERROR: db_mysql [km_dbase.c:238]: db_mysql_store_result(): driver error: MySQL client ran out of memory May 11 12:46:40 blftest /usr/local/kamailio-dev/sbin/kamailio[8299]: ERROR: <core> [db_query.c:137]: db_do_query_internal(): error while storing result May 11 12:46:40 blftest /usr/local/kamailio-dev/sbin/kamailio[8299]: ERROR: presence [notify.c:664]: get_p_notify_body(): failed to query presentity table May 11 12:46:40 blftest /usr/local/kamailio-dev/sbin/kamailio[8299]: ERROR: presence_dialoginfo [notify_body.c:530]: dlginfo_body_setversion(): body string too short! May 11 12:50:26 blftest /usr/local/kamailio-dev/sbin/kamailio[8302]: ERROR: db_mysql [km_dbase.c:371]: db_mysql_fetch_result(): driver error: MySQL client ran out of memory May 11 12:50:26 blftest /usr/local/kamailio-dev/sbin/kamailio[8302]: ERROR: <core> [db_query.c:432]: db_fetch_query_internal(): unable to fetch the db result May 11 12:50:26 blftest /usr/local/kamailio-dev/sbin/kamailio[8302]: ERROR: presence [publish.c:106]: msg_presentity_clean(): failed to query database for expired messages ```
--- Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/issues/155#issuecomment-100869548
### I do next test, how many memory leak in time each 100 calls in kb: ``` in (is used memory from FREE before and after SIPP command) first 100 calls (928188-926836)/100.0=13.52 next 100 calls total 200 calls (932564-928188)/100.0=43.76 next 100 after total 300 calls (942832-932564)/100.0=102.68 next 100 after total 400 calls (961088-942832)/100.0=182.56 next 100 after total 500 calls (989580-961088)/100.0=284.92 next 100 after total 600 calls (1030704-989580)/100.0=411.24 next 100 after total 700 calls (1086652-1030704)/100.0=559.48 next 100 after total 800 calls (1159984-1086652)/100.0=733.32 ```
### code: ``` cat count_mem_seq.sh #!/bin/bash cc=0 while true; do echo "---------------------------------------- after $cc calls" free echo "Presence Kbytes RSS Dirty" for line in $(pgrep -f '/usr/local/kamailio-dev/sbin/kamailio -f /usr/local/kamailio-dev/etc/kamailio/kamailio.cfg -P /var/run/kamailio_dev/kamailio_dev.pid -m 16 -M 8 -u root -g root') do pms=$(pmap -x $line|grep total) echo "$pms pid:$line" done
echo "----------------------------------------" ./sipp -nostdin -sf ./uac.xml -p 5099 -s uas -r 2 -rp 1000 -m 100 81.31.45.53:6688 -trace_err -inf ./inf3.csv > /dev/null 2>&1 if [ $? != 0 ];then exit fi let cc+=100 done ```
### output: ``` ---------------------------------------- after 0 calls total used free shared buffers cached Mem: 1200000 926836 273164 0 0 926836 -/+ buffers/cache: 0 1200000 Swap: 0 0 0 Presence Kbytes RSS Dirty total kB 138012 6388 3512 pid:32509 total kB 138012 4504 1748 pid:32512 total kB 138012 2892 1444 pid:32513 total kB 138012 2904 1456 pid:32514 total kB 138012 4500 1744 pid:32515 total kB 138012 2748 1568 pid:32516 total kB 138012 2840 1880 pid:32517 total kB 138016 1968 1220 pid:32518 total kB 138012 2224 1220 pid:32519 total kB 138012 2348 1560 pid:32520 ---------------------------------------- ---------------------------------------- after 100 calls total used free shared buffers cached Mem: 1200000 928188 271812 0 0 928188 -/+ buffers/cache: 0 1200000 Swap: 0 0 0 Presence Kbytes RSS Dirty total kB 138012 6388 3512 pid:32509 total kB 138360 6992 3816 pid:32512 total kB 138356 6848 3824 pid:32513 total kB 138356 6824 3800 pid:32514 total kB 138352 6992 3816 pid:32515 total kB 138012 2748 1568 pid:32516 total kB 138012 4320 3312 pid:32517 total kB 138016 1968 1220 pid:32518 total kB 138012 2224 1220 pid:32519 total kB 138012 2348 1560 pid:32520 ---------------------------------------- ---------------------------------------- after 200 calls total used free shared buffers cached Mem: 1200000 932564 267436 0 0 932564 -/+ buffers/cache: 0 1200000 Swap: 0 0 0 Presence Kbytes RSS Dirty total kB 138012 6388 3512 pid:32509 total kB 139460 8616 5440 pid:32512 total kB 139444 8452 5428 pid:32513 total kB 139460 8444 5420 pid:32514 total kB 139436 8652 5476 pid:32515 total kB 138012 2768 1576 pid:32516 total kB 138012 4792 3784 pid:32517 total kB 138016 1968 1220 pid:32518 total kB 138012 2224 1220 pid:32519 total kB 138012 2348 1560 pid:32520 ---------------------------------------- ---------------------------------------- after 300 calls total used free shared buffers cached Mem: 1200000 942832 257168 0 0 942832 -/+ buffers/cache: 0 1200000 Swap: 0 0 0 Presence Kbytes RSS Dirty total kB 138012 6388 3512 pid:32509 total kB 141924 11364 8188 pid:32512 total kB 142060 11244 8220 pid:32513 total kB 142000 11212 8188 pid:32514 total kB 142080 11480 8304 pid:32515 total kB 138012 2772 1580 pid:32516 total kB 138012 5020 4012 pid:32517 total kB 138016 1968 1220 pid:32518 total kB 138012 2224 1220 pid:32519 total kB 138012 2348 1560 pid:32520 ---------------------------------------- ---------------------------------------- after 400 calls total used free shared buffers cached Mem: 1200000 961088 238912 0 0 961088 -/+ buffers/cache: 0 1200000 Swap: 0 0 0 Presence Kbytes RSS Dirty total kB 138012 6388 3512 pid:32509 total kB 146560 16200 13024 pid:32512 total kB 146652 16084 13060 pid:32513 total kB 146436 15888 12864 pid:32514 total kB 146672 16348 13172 pid:32515 total kB 138012 2776 1584 pid:32516 total kB 138012 5260 4252 pid:32517 total kB 138016 1968 1220 pid:32518 total kB 138012 2224 1220 pid:32519 total kB 138012 2348 1560 pid:32520 ---------------------------------------- ---------------------------------------- after 500 calls total used free shared buffers cached Mem: 1200000 989580 210420 0 0 989580 -/+ buffers/cache: 0 1200000 Swap: 0 0 0 Presence Kbytes RSS Dirty total kB 138012 6388 3512 pid:32509 total kB 153684 23544 20368 pid:32512 total kB 153648 23324 20300 pid:32513 total kB 153316 22940 19916 pid:32514 total kB 154164 23940 20764 pid:32515 total kB 138012 2784 1592 pid:32516 total kB 138012 5468 4460 pid:32517 total kB 138016 1968 1220 pid:32518 total kB 138012 2224 1220 pid:32519 total kB 138012 2348 1560 pid:32520 ---------------------------------------- ---------------------------------------- after 600 calls total used free shared buffers cached Mem: 1200000 1030704 169296 0 0 1030704 -/+ buffers/cache: 0 1200000 Swap: 0 0 0 Presence Kbytes RSS Dirty total kB 138012 6388 3512 pid:32509 total kB 164568 34476 31300 pid:32512 total kB 163940 33748 30724 pid:32513 total kB 163264 32968 29944 pid:32514 total kB 164164 34072 30896 pid:32515 total kB 138012 2788 1596 pid:32516 total kB 138012 5556 4548 pid:32517 total kB 138016 1968 1220 pid:32518 total kB 138012 2224 1220 pid:32519 total kB 138012 2348 1560 pid:32520 ---------------------------------------- ---------------------------------------- after 700 calls total used free shared buffers cached Mem: 1200000 1086652 113348 0 0 1086652 -/+ buffers/cache: 0 1200000 Swap: 0 0 0 Presence Kbytes RSS Dirty total kB 138012 6388 3512 pid:32509 total kB 178948 48964 45788 pid:32512 total kB 177908 47752 44728 pid:32513 total kB 176796 46708 43684 pid:32514 total kB 178232 48240 45064 pid:32515 total kB 138012 2796 1604 pid:32516 total kB 138012 5652 4644 pid:32517 total kB 138016 1968 1220 pid:32518 total kB 138012 2224 1220 pid:32519 total kB 138012 2348 1560 pid:32520 ---------------------------------------- ---------------------------------------- after 800 calls total used free shared buffers cached Mem: 1200000 1159984 40016 0 0 1159984 -/+ buffers/cache: 0 1200000 Swap: 0 0 0 Presence Kbytes RSS Dirty total kB 138012 6388 3512 pid:32509 total kB 196988 67156 63980 pid:32512 total kB 196500 66560 63536 pid:32513 total kB 195200 65208 62184 pid:32514 total kB 196528 66696 63520 pid:32515 total kB 138012 2800 1608 pid:32516 total kB 138012 5784 4776 pid:32517 total kB 138016 1968 1220 pid:32518 total kB 138012 2224 1220 pid:32519 total kB 138012 2348 1560 pid:32520 ---------------------------------------- ---------------------------------------- after 900 calls total used free shared buffers cached Mem: 1200000 1198932 1068 0 0 1185360 -/+ buffers/cache: 13572 1186428 Swap: 0 0 0 Presence Kbytes RSS Dirty total kB 138012 6388 3512 pid:32509 total kB 205940 76344 73112 pid:32512 total kB 206212 76440 73360 pid:32513 total kB 204848 75096 72020 pid:32514 total kB 207164 76592 73368 pid:32515 total kB 138012 2800 1608 pid:32516 total kB 138012 5876 4868 pid:32517 total kB 138016 1968 1220 pid:32518 total kB 138012 2224 1220 pid:32519 total kB 138012 2348 1560 pid:32520 ---------------------------------------- ```
#### BTW: I try create same BLF presence server with opensip, which not have memory leak, but stop response after call refer.
#### I hope that it`s help.
--- Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/issues/155#issuecomment-100921469
I pushed a patch in master branch fixing some leaks I could spot on use of libxml2 api. Can you test with latest master and report the back if there are still leaks around or not?
--- Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/issues/155#issuecomment-101035278
I tested today and it looks like that the problem is solved. Thank you.
--- Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/issues/155#issuecomment-101375635
Thanks for report, troubleshooting and testing the patch.
--- Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/issues/155#issuecomment-101395273
Closed #155.
--- Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/issues/155#event-303155904