I’m about to get a project of setting up an asterisk for 3000 people (about 300 simultaneous calls). SIP trunk and SIP endpoints. No analog or primary cards. G711 codec only. Both SIP and RTP traffic should be passing through this machine (canreinvite=no). Just was wondering if a single server can handle this load. If so, what kind of a server I need. Where am I most likely to get a bottleneck. Please share your experience.
Thanks in advance.
300 concurrent calls is at the outer limits of asterisk running on a single [heavy duty] server, and only if you take off as much as possible [queues, conferences, music on hold, call recording etc]. unless you are expert in being able to tune servers to this level of performance, i would suggest this is not a wise plan at all. the CPU will be the primary bottleneck and multiple CPUs will not really help since this application does not take much advantage, if any, of any parallelism.
the better approach would be to split the architecture - two good servers should be able to handle that load just fine. You just have to configure the pair to work together in a way that is more or less seamless to the users.
I actuallly disagree that a single server can’t handle 300 concurrent calls. It alll depends on what you are doing. If the server is doing straigh packet2packet bridging with no transcoding, no queues, no meetme, no monitor/mixmonitor, etc… you should be able to achieve this on a good machine.
If you add any complexities into the mix, you are asking for trouble.
I use app_conference for my channel bridging and have had close to 200 calls on a single machine with the load staying under 1.0. We run clusters of dual core Dell 1950s with 2.33Ghz CPUs.
we don’t have any registration on our network, so I am not sure how 3000 registrants is going to alter the outcome of this equation.
Yep 300 call is possible , here is the channel warning from tonight when one topped out at 329 …
[code]Service: Asterisk Channels
Date/Time: Thu Nov 12 19:44:40 GMT 2009
WARNING 329 SIP channels detected. Channels: Local (12) SIP (329)[/code]
and service was fine, the other server all had about 280 channels active.
Thanks a lot for your replies.
If the server is doing straigh packet2packet bridging with no transcoding, no queues, no meetme, no monitor/mixmonitor, etc…
That’s pretty much what we are doing. Dialplan is a few basic checkups on source and destination prefixes of a call, and then a Dial command. Sometimes a call goes to voicemail system. I’ve already mentioned, at all ends we are using G711 (no transcoding, no cpu-greedy codecs).
Ianplain, if it is not topsecret stuff, could you mention what hardware are you using.
Thanks to all once again
Dell dual Intel® Xeon® CPU 2.13GHz with 2Gig or ram.
hmmm… this seems all a matter of perspective: 329 with everything stripped off… on that basis i would say 300 calls counts with 3000 registrations counts as outer limits. If you are serious about offering decent quality service to a 3000 registrant pool that will hit 300 concurrent calls then i would suggest that you look at alternatives [open source of course] to asterisk where numbers like 300 concurrent calls are a barely warming the server up.
All RTP will be via the server, Some of these will be being recorded and all are either in conference rooms or transiting to another server to be in a room there. They will also be muting and unmuting themselves etc.
I think the key factor being missed here is that both my network and Ian’s network process MANY more calls than 300 concurrent using a multitude of systems.
I personally have a network of many asterisk servers behind multiple Kamailio (OpenSER) SIP gateways performing dispatcher and LCR services and other various routing tasks. I am comfortable with each server doing 250-300 concurrent calls. They aren’t maxed out, that just happens to be my comfort level from our load tests.
The bottom line is that if you want to have an enterprise class network with 3000 registrants and multiple hundred concurrent calls, you should probably architect a multi-server system to do the work. Even if you never max out a single machine, you are still going to want redundancy… otherwise you could have 3000 angry people.
Just to give an idea of the server load when having about 300 calls.
WARNING 255 SIP channels detected. Channels: Local (4) SIP (255)
LOAD OK - load average: 0.28, 0.21, 0.18
WARNING 305 SIP channels detected. Channels: Local (12) SIP (305)
LOAD OK - load average: 0.33, 0.51, 0.53
There is plenty of info for placing asterisk ‘behind’ Kamailio and OpenSips for load balancing. But scant details about getting Kamailio/OpenSips to speak to an ITSP over SIP trunks that requires registration to receive calls.
Those of you posting on this thread running in this configuration may not be required to do so. But is it possible for Kamailio/OpenSips to register to a ITSP over SIP to start acting as a proxy. Or is the accepted practice to place another Asterisk server there as a “gateway” between the ITSP and SIP proxy?
Speak to you ITSP, any worth its salt would NOT expect to have registrations if its for multiple trunks. They will send direct to IP, They don’t want the registration load as much as you don’t want it.
Assuming the ITSP not willing to go this route. Is my only option to put an Asterisk install in the corner as a gateway to my SIP trunks and toss in a T1 or two for emergency dialing since it’s sitting there anyways? Would the uac module do what I need here?