[asterisk-users] max concurrent calls with bundled pjproject

George Joseph gjoseph at digium.com
Thu Aug 18 10:48:17 CDT 2016


On Thu, Aug 18, 2016 at 3:33 AM, ian gilmour <ian.gilmour.x at gmail.com>
wrote:

> Hi,
>
> PJSIP in the past had limitations on the max concurrent calls, etc. There
> were ways to overcome them by changing the source code. (e.g.
> http://lists.pjsip.org/pipermail/pjsip_lists.pjsip.
> org/2013-February/015721.html)
>
> Do any similar tweaks need to be done to the bundled pjproject to handle
> high volumes of concurrent calls with Asterisk?
>
The bundled defaults are already tuned for server type loads.  The
MAX_CALLS and MAX_PLAYERS settings mentioned in that email don't apply to
asterisk since we don't use those components.


> What (if any) are the current default asterisk 13 + pjproject audio +
> video concurrent call limits if using the bundled pjproject + asterisk
> patches as is?
>
Here are the setting we use (third-party/pjproject/patches/config_site.h).
The best optimization is the use of epoll instead of select which we
automatically turn on if the OS is Linux.  It's hard to say what the actual
call limit would be since it's dependent on memory, CPU, etc.  Technically,
it would be 2500 based on MAX_HANDLES but with epoll in use, that number
just controls the size of 1 array and can be easily increased with little
effect on memory utilization.

#include <sys/select.h>

#define PJ_HAS_IPV6 1
#define NDEBUG 1
#define PJ_MAX_HOSTNAME (256)
#define PJSIP_MAX_URL_SIZE (512)
#ifdef PJ_HAS_LINUX_EPOLL
#define PJ_IOQUEUE_MAX_HANDLES (5000)
#else
#define PJ_IOQUEUE_MAX_HANDLES (FD_SETSIZE)
#endif
#define PJ_IOQUEUE_HAS_SAFE_UNREG 1
#define PJ_IOQUEUE_MAX_EVENTS_IN_SINGLE_POLL (16)

#define PJ_SCANNER_USE_BITWISE 0
#define PJ_OS_HAS_CHECK_STACK 0
#define PJ_LOG_MAX_LEVEL 3
#define PJ_ENABLE_EXTRA_CHECK 1
#define PJSIP_MAX_TSX_COUNT ((64*1024)-1)
#define PJSIP_MAX_DIALOG_COUNT ((64*1024)-1)
#define PJSIP_UDP_SO_SNDBUF_SIZE (512*1024)
#define PJSIP_UDP_SO_RCVBUF_SIZE (512*1024)
#define PJ_DEBUG 0
#define PJSIP_SAFE_MODULE 0
#define PJ_HAS_STRICMP_ALNUM 0
#define PJ_HASH_USE_OWN_TOLOWER 1
/*
  It is imperative that PJSIP_UNESCAPE_IN_PLACE remain 0 or undefined.
  Enabling it will result in SEGFAULTS when URIs containing escape
sequences are encountered.
*/
#undef PJSIP_UNESCAPE_IN_PLACE
#define PJSIP_MAX_PKT_LEN 6000

#undef PJ_TODO
#define PJ_TODO(x)

/* Defaults too low for WebRTC */
#define PJ_ICE_MAX_CAND 32
#define PJ_ICE_MAX_CHECKS (PJ_ICE_MAX_CAND * 2)


Thanks in advance.
>
> Regards,
>
> IanG
>
> --
> _____________________________________________________________________
> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
> New to Asterisk? Join us for a live introductory webinar every Thurs:
>                http://www.asterisk.org/hello
>
> asterisk-users mailing list
> To UNSUBSCRIBE or update options visit:
>    http://lists.digium.com/mailman/listinfo/asterisk-users
>



-- 
George Joseph
Digium, Inc. | Software Developer
445 Jan Davis Drive NW - Huntsville, AL 35806 - US
Check us out at: www.digium.com & www.asterisk.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-users/attachments/20160818/596e7b1e/attachment-0001.html>


More information about the asterisk-users mailing list