(Thread moved from -dev)
Hi Ma-
You probably can do this with a 3GHz+ processor, but I don't have experience
with such a busy voicemail server - perhaps someone on here will...
Regards,
Scott Stingel
www.evtmedia.com
------------------------------------------------------------------------------------------------------------
Ma Zhiyong wrote:
Thanks Scott.
I sure read your note on wiki before I do the loadtest. Very helpful.
My application is a voicemail system. So I expect all channels can work
well even under the scenario that all of them is used at the same time.
So Can I do this with using a more powerful processor?
What kinds of suggestion do you have?
Thanks.
------------------------------------------------------------------
Scott Stingel wrote:
Hi-
Last year, I also did extensive tests on the TE410P, running loopbacks
within one box (a P4 at 2.8GHz) and also between two similar boxes, each
with a TE410P running all spans.
Although my tests didn't involve the voicemail application like yours, I
found that one box can barely keep up with all four E1's running full
call loads (with short duration calls), and that two TE410P's in one box
definitely way overloaded a box. I demonstrated this scenario to Mark
Spencer at Digium at the time (about a year ago now).
My theory was that new call setup contributed to call load, not just the
number of simultaneous connections. You *might* be OK running 4 spans in
a box if the calls were normal conversations and not doing much else.
Perhaps the voicemail app (recording in particular) presents a heavy load.
I also put some notes about my tests in the asterisk Wiki at the time,
under the "Dimensioning" section.
Regards
Scott Stingel
www.evtmedia.com
Ma Zhiyong wrote:
> Hi,ALL
> I made a voicemail box based on * and one TE410P card on Redhat
> platform. My server worked with SuperMacro P4SCI motherboard, P4 2.4c
> CPU and 1G memory. Things couldn't be better. So I did the loadtest.
> I use two E1 ports as pri_cpe and other two ports as pri_net. Then I
> connected them b2b and use autodialed outgoing calls to play sound in
> one channel and record the sound in another correspondingly.
> When I made 50 calls, that meant 100 channels was used. I could found
> msg*.wav files in INBOX directory of 50 vm users. And the record files
> was good. I check the CPU time use "top" command just like the
list below.
> #top
> PID USER %CPU %MEM TIME CPU COMMAND
> 3715 root 9X.X 1.5 1:20 0 asterisk
> 1 root 0.0 0.0 0:05 0 init
> 2 root 0.0 0.0 0:00 0 keventd
> 3 root 0.0 0.0 0:00 0 kapmd
> But when I made 60 calls, that used all 120 channels. It didn't work
> well. I couldn't found all 60 msg*.wav in INBOX directory of 60 vm
> users. And some of the existed msg*.wav was not completed.
> I think that means some of the calls lost.
> Do that mean my CPU is not good? Or some other reasons?
> Anybody has similar experience?
> Thanks.
> BTW below is my dialplan and callfile.
> [from-te410p]
> exten => 50000,1,Answer
> exten => 50000,2,Wait,1
> exten => 50000,3,Voicemail(u${CALLERIDNUM}) ; just test
> exten => 50000,4,Hangup
> [loadtest]
> exten => 0,1,Answer
> exten => 0,2,Wait,3
> exten => 0,3,Playback(DTMF-pound)
> ;DTMF-pound is a DTMF pound tone
> exten => 0,4,Playback(demo-instruct) ; Play some instructions
> exten => 0,5,Playback(DTMF-pound)
> exten => 0,6,Hangup
> #generate call files use a shell.
>
> CALL_TMP_DIR="/var/spool/asterisk/tmp"
> CALL_SPOOL_DIR="/var/spool/asterisk/outgoing"
> make_callfile()
> {
> # the load test call files using voicemail box 5501-5530 5601-5630
> if [ "x$1" != "x" ];then mailbox="$1"; else
return 1; fi
> if [ "x$2" != "x" ];then channel="$2"; else
return 1; fi
> # note use of '-' in '-EOF1' - Escapes tab at beginning of
lines
> CALLFILE=$(cat <<-EOF1
> Channel: ZAP/$channel/50000
> Callerid: $mailbox
> MaxRetries: 2
> RetryTime: 120
> WaitTime: 30
>
> Context: loadtest
> Extension: 0
> Priority: 1
> EOF1)
> echo "$CALLFILE" >>
"$CALL_TMP_DIR"/callfile$mailbox-$(date +%s)
> }
>
> i=5501
> j=5530
> while [ $i -le $j ]
> do
> make_callfile "$i" "g4"
> `mv callfile$i-* $CALL_SPOOL_DIR`
> echo "file$i generated!"
> i=`expr $i + 1`
> done
>
> i=5601
> j=5630
> while [ $i -le $j ]
> do
> make_callfile "$i" "g2"
> `mv callfile$i-* $CALL_SPOOL_DIR`
> echo "file$i generated!"
> i=`expr $i + 1`
> done
>
>------------------------------------------------------