• sipp 对asterisk 进行压力测试


    测试环境

    asterisk  192.168.106.170

    版本astrisk1.8

    sipp   192.168.106.141

    sipp版本3.3

    安装依赖包
    yum install make gcc gcc-c++ ncurses ncurses.x86_64 ncurses-devel ncurses-devel.x86_64 openssl libnet libpcap libpcap-devel libpcap.x86_64 libpcap-devel.x86_64 gsl gsl-devel

    asterisk配置

    sip.conf

    [general]
            context=default
            allowoverlap=no
            allowguest=no
            udpbindaddr=0.0.0.0
            tcpenable=no
            tcpbindaddr=0.0.0.0
            srvlookup=yes
            language=cn
            callevents=yes
            limitonpeers=no
            jbenable=yes
    
    
    [sipp]
    
            host=192.168.106.141
            type=friend
    
            disallow=all
            allow=g729
            allow=g723
            allow=ulaw
            allow=alaw
            context=sipp

    extension.conf

    [general]
            static=yes
            writeprotect=no
            clearglobalvars=no
    
    [globals]
    
    [sipp]
            exten => 7777,1,Answer
            exten => 7777,2,SetMusicOnHold(default)
            exten => 7777,3,WaitMusicOnHold(2000)
            exten => 7777,4,Hangup

    sipp客户端配置

    uac-media.xml

    <?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 'uac' scenario with pcap (rtp) play           -->
    <!--                                                                    -->
    
    <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.                -->
      <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: sipp<sip:sipp@[local_ip]:[local_port]>;tag=[call_number]
          To: sut<sip:[field1]@[remote_ip]:[remote_port]>
          Call-ID: [call_id]
          CSeq: 1 INVITE
          Contact: sip:sipp@[local_ip]:[local_port]
          Max-Forwards: 70
          Subject: Performance Test
          Content-Type: application/sdp
          Content-Length: [len]
    
          v=0
          o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]
          s=-
          c=IN IP[local_ip_type] [local_ip]
          t=0 0
          m=audio [media_port] RTP/AVP 0
          a=rtpmap:18 G729
         
        ]]>
      </send>
    
      <recv response="100" 
             optional="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">
      </recv>
    
         
      <!-- Packet lost can be simulated in any send/recv message by         -->
      <!-- by adding the 'lost = "10"'. Value can be [1-100] percent.       -->
      <send>
          <![CDATA[
    
          ACK sip:[field1]@[remote_ip]:[remote_port] SIP/2.0
          Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
          From: sipp <sip:sipp@[local_ip]:[local_port]>;tag=[call_number]
          To: sut <sip:[field1]@[remote_ip]:[remote_port]>[peer_tag_param]
          Call-ID: [call_id]
          CSeq: 1 ACK
          Contact: sip:sipp@[local_ip]:[local_port]
          Max-Forwards: 70
          Subject: Performance Test
          Content-Length: 0
        ]]>
      </send>
    
    
      <!-- Play a pre-recorded PCAP file (RTP stream)                       -->
      <nop>
          <action>
                <exec play_pcap_audio="pcap/g711a.pcap"/>
                    </action>
                      </nop>
    
    
      <!-- Pause 800 seconds, which is approximately the duration of the      -->
      <!-- PCAP file                                                        -->
      <pause milliseconds="800000"/>
    
    
      <!--This delay can be customized by the -d command-line option      -->
      <!--or by adding a'milliseconds = "value" option here              -->
      <pause/>
    
      <!-- The 'crlf' option inserts a blank line in the statistics report. -->
      <send retrans="500">
          <![CDATA[
    
          BYE sip:[field1]@[remote_ip]:[remote_port] SIP/2.0
          Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
          From: sipp <sip:[field0]@[local_ip]:[local_port]>;tag=[call_number]
          To: sut <sip:[field1]@[remote_ip]:[remote_port]>[peer_tag_param]
          Call-ID: [call_id]
          CSeq: 2 BYE
          Contact: sip:sipp@[local_ip]:[local_port]
          Max-Forwards: 70
          Subject: Performance Test
          Content-Length: 0
          ]]>
       </send>
    
      <recv response="200" crlf="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>

    44.csv

    SEQUENTIAL
    4444;7777;[authentication username=4444 password=8888]


    之后执行命令

    ./sipp -sf uac-media.xml -inf 44.csv -p 5060 -i 192.168.106.141 -m 100000 192.168.106.170 -l 2000

    显示

    Last Error: Aborting call on UDP retransmission timeout for Call-ID '281...
    ------------------------------ Scenario Screen -------- [1-9]: Change Screen --
      Call-rate(length)   Port   Total-time  Total-calls  Remote-host
      10.0(0 ms)/1.000s   5060     313.57 s         3135  192.168.106.170:5060(UDP)
    
      9 new calls during 0.952 s period      0 ms scheduler resolution
      1322 calls (limit 2000)                Peak was 1332 calls, after 300 s
      1 Running, 1659 Paused, 62 Woken up
      1702 dead call msg (discarded)         1444 out-of-call msg (discarded)     
      3 open sockets                        
    
                                     Messages  Retrans   Timeout   Unexpected-Msg
          INVITE ---------->         3135      10823     1680               
             100 <----------         1140      0         0         0        
             200 <----------  E-RTD1 1140      1803      0         0        
             ACK ---------->         1140      1803                         
           Pause [    13:20]         1140                          133      
           Pause [      0ms]         0                             0        
             BYE ---------->         0         0         0                  
             200 <----------         0         0         0         0        
    
    ------------------------------ Test Terminated --------------------------------

    asterisk服务器显示

    SIP/sipp-00000cb7    7777@sipp:3          Up      WaitMusicOnHold(2000)         
    SIP/sipp-00000a18    7777@sipp:3          Up      WaitMusicOnHold(2000)         
    SIP/sipp-00000cb4    7777@sipp:3          Up      WaitMusicOnHold(2000)         
    SIP/sipp-00000a3e    7777@sipp:3          Up      WaitMusicOnHold(2000)         
    SIP/sipp-00000cb5    7777@sipp:3          Up      WaitMusicOnHold(2000)         
    SIP/sipp-00000a3d    7777@sipp:3          Up      WaitMusicOnHold(2000)         
    SIP/sipp-00000ab4    7777@sipp:3          Up      WaitMusicOnHold(2000)         
    SIP/sipp-00000cb2    7777@sipp:3          Up      WaitMusicOnHold(2000)         
    SIP/sipp-00000ab5    7777@sipp:3          Up      WaitMusicOnHold(2000)         
    SIP/sipp-00000cb3    7777@sipp:3          Up      WaitMusicOnHold(2000)         
    SIP/sipp-00000a3f    7777@sipp:3          Up      WaitMusicOnHold(2000)         
    SIP/sipp-00000ab6    7777@sipp:3          Up      WaitMusicOnHold(2000)         
    SIP/sipp-00000cb0    7777@sipp:3          Up      WaitMusicOnHold(2000)         
    SIP/sipp-00000a3a    7777@sipp:3          Up      WaitMusicOnHold(2000)         
    SIP/sipp-00000ab7    7777@sipp:3          Up      WaitMusicOnHold(2000)         
    SIP/sipp-00000cb1    7777@sipp:3          Up      WaitMusicOnHold(2000)         
    SIP/sipp-00000ab0    7777@sipp:3          Up      WaitMusicOnHold(2000)         
    1000 active channels
    1000 active calls
    3783 calls processed
    [root@test asterisk]# asterisk -rx"core show channels"



     -----------------------------------

    Can't create thread to send RTP packets,翻译过来就是“无法创建线程发送RTP数据包”

    大概知道是需要设置ulimit ,但设置好像没有生效。在龙舟兄弟的指导与提醒下,索性直接ulimit -s unlimited,设置为不限制了。

    如此之后,rtp就不受限制了。

     

     xml实例文件

    https://github.com/saghul/sipp-scenarios

  • 相关阅读:
    Spring课程 Spring入门篇 5-6 introductions应用
    Spring课程 Spring入门篇 5-5 advice应用(下)
    Spring课程 Spring入门篇 5-4 advice应用(上)
    Spring课程 Spring入门篇 5-3 配置切入点 pointcut
    Spring课程 Spring入门篇 5-2 配置切面aspect
    Spring课程 Spring入门篇 5-1 aop基本概念及特点
    Spring课程 Spring入门篇 总结
    Spring课程 Spring入门篇 4-9 Spring bean装配之对jsr支持的说明
    Spring课程 Spring入门篇 4-8 Spring bean装配之基于java的容器注解说明--基于泛型的自动装配
    Spring课程 Spring入门篇 4-7 Spring bean装配之基于java的容器注解说明--@Scope 控制bean的单例和多例
  • 原文地址:https://www.cnblogs.com/noobkey/p/3181893.html
Copyright © 2020-2023  润新知