res_pjsip: Set threadpool max size default to 50.
authorMark Michelson <mmichelson@digium.com>
Mon, 2 Nov 2015 23:19:21 +0000 (17:19 -0600)
committerMark Michelson <mmichelson@digium.com>
Mon, 2 Nov 2015 23:24:09 +0000 (18:24 -0500)
During a stress test of subscriptions, a huge blast of
subscription-related traffic resulted in the threadpool expanding to a
ridiculous number of threads. The balooning of threads resulted in an
increase of memory, which led to a crash due to being out of memory.

An easy fix for the particular test was to limit the size of the
threadpool, thus reining in the amount of memory that would be used. It
was decided that there really is no downside to having a non-infinite
default value for the maximum size of the threadpool, so this change
introduces 50 threads as the maximum threadpool size for the SIP
threadpool.

ASTERISK-25513 #close
Reported by John Bigelow

Change-Id: If0b9514f1d9b172540ce1a6e2f2ffa1f2b6119be

res/res_pjsip/config_system.c

index 473eca8..dfd9240 100644 (file)
@@ -180,7 +180,7 @@ int ast_sip_initialize_system(void)
                        OPT_UINT_T, 0, FLDSET(struct system_config, threadpool.auto_increment));
        ast_sorcery_object_field_register(system_sorcery, "system", "threadpool_idle_timeout", "60",
                        OPT_UINT_T, 0, FLDSET(struct system_config, threadpool.idle_timeout));
-       ast_sorcery_object_field_register(system_sorcery, "system", "threadpool_max_size", "0",
+       ast_sorcery_object_field_register(system_sorcery, "system", "threadpool_max_size", "50",
                        OPT_UINT_T, 0, FLDSET(struct system_config, threadpool.max_size));
        ast_sorcery_object_field_register(system_sorcery, "system", "disable_tcp_switch", "yes",
                        OPT_BOOL_T, 1, FLDSET(struct system_config, disable_tcp_switch));