1.sipp安装依赖包:
libnet
nurses
libpcap
libpcap-devel
openssl

#sipp安装包
yum install libpcap-devel

2.执行命令
sipp 192.168.1.31 -i 192.168.1.30  -p 5050 -s 5600  -m 5200 -r 30 -max_socket 5600 -sf test.xml -inf auto_users.xml -trace_screen -trace_err -aa -rtp_echo
其中30是客户端,31是服务器
-p 是客户端端口
-m
-l 并发执行数量
-s 被叫号码

sipp -sd branchc >branchc.xml   //重新输出branchc.xml模板

3.csv文件准备  auto_users.cvs
#!/bin/bash
echo "SEQUENTIAL" >auto_users.xml
for ((i=1001,j=1002;i<6001,j<6002;i+=2,j+=2))
do
      echo "$i;$j;[authentication username='"$i"' password=12345]" >>auto_users.xml
done

for ((i=1002,j=1001;i<6002,j<6001;i+=2,j+=2))
do
      echo "$i;$j;[authentication username='"$i"' password=12345]" >>auto_users.xml
done

4.脚本文件配置
  场景是客户端向服务器发送注册及会话请求,服务器设置为默认自动接听,所有用户信息都在31上,所以所有的服务器地址与remote_ip(所有@后的ip地址)都是31
1)reg消息要from和to号码与地址一致
2)invite请求消息需要

3)注意每条消息的Cseq值,第一次登记是1,第二次是2,第一次请求会话是1,第二次是2,ack要与前一条请求消息对应,bye自成一条;
4)消息配置的脚本中[fieldx]值与auto_users一一对应
            [field0]:用户名
            [field1]:被叫号码
            [field2]:验证信息
5)ACK消息的Via、From、To可以使用[last_Via]。。。rport[last_From][last_To]代替尝试解决问题
6)与freeswitch联调问题时,可以wireshark抓包对比一次完整呼叫流程查看,trace_msg可以查看sipp发出的所有包
7)注意rtp文件的编码格式
8)5秒断开会话连接是服务器没有收到rtp包

5.问题遗留
 1)被叫端收不到对端invite请求;
 2)rtp_echo始终有效,而nop播放媒体流有时会失败;
 3)rtp_echo方式时,客户端发出的流量明显少于接收的流量;
 4)目前加鉴权验证两次reg后会回复403forbiden,之前曾经可用过,脚本未改动,现在不行了
 5)被叫号码必须固定

6.测试过程中学习命令
 #挂载光盘
 1)mount -t auto /dev/sr0    /mnt/cdrom       //光盘默认是sr0,sr1...

#卸载光驱
 2)umount /mnt/cdrom                  //注意mount时需要root用户,umount时需要离开光盘目录

3)tcpdump -i eno3 src 192.168.198.145   //可以指定网口指定源、目的ip指定部分协议抓包(rtp协议没有)
 4)tcpreplay                          //指定速率回放数据文件,允许持续循环且能记录端口流量(iftop)
 5)/etc/sysconfig/network-scripts/配置网络IP
 6)systemctl stop firewalld
   systemctl disable firewalld         //centOS 7+ 防火墙关闭使用
 7)netstat -anp|grep sipp             //端口查看
 8)端口监听

在服务端开启udp端口监听:
nc -ulp 6000 &

在服务端开启tcp端口监听:
nc -l 25500

在客户端探测或发消息到udp端口
nc -vu xxx.xxx.xxx.xxx 25500

查看当前监听的udp端口
netstat -anu

查看当前监听sipp的tcp端口
netstat -ant|sipp

9)输入值的脚本
#!/bin/bash
# Author:fairylly
# 执行脚本时,未输入参数,提示:please input call number!,并退出
if [[ $# -eq 0 ]]
then
        echo "please input call number!"
        exit 1
fi
 10)dstat安装

使用"绿色版"安装

wget http://dstat.sourcearchive.com/downloads/0.7.0/dstat_0.7.0.orig.tar.gz
  tar -xvzf dstat_0.7.0.orig.tar.gz
  cd dstat-0.7.0.orig/
  #使用以下方式即可使用dstat
  ./dstat -V

使用rpm安装

wget http://mirror.centos.org/centos/6/os/i386/Packages/dstat-0.7.0-2.el6.noarch.rpm
  rpm -ivh dstat-0.7.0-2.el6.noarch.rpm
  #直接在系统中调用dstat即可
  dstat -V

使用yum安装

yum -y install dstat

#监控swap,process,sockets,filesystem并显示监控的时间
dstat -tsp --socket --fs

#当前最消耗IO的进程和最消耗块设备IO的进程
 dstat -t --top-io-adv --top-bio-adv
 #输出到.csv文件
 dstat -tsp --socket --fs --output /tmp/dstat.csv

dstat -cdlmnpsy

查看全部内存都有谁在占用:
# dstat -g -l -m -s --top-mem

显示一些关于CPU资源损耗的数据:
# dstat -c -y -l --proc-count --top-cpu

1221used:
dstat -t --top-io-adv --top-bio-adv -n
 
常用参数:
-c cpu,显示CPU系统占用,用户占用,空闲,等待,中断,软件中断等信息

-C 当有多个CPU时候,此参数可按需分别显示cpu状态

-d disk,显示磁盘读写数据大小

-n net 显示网络状态

-N net 有多块网卡时,指定要显示的网卡

-l load average 显示系统负载情况

-m memory 显示内存使用情况

-g page 显示页面使用情况

-p process 显示进程状态

-y system status

--ipc 显示ipc消息队列,信号等信息

--socket 用来显示tcp udp端口状态

-v vmstat 等同于 -pmgdsc -D total

--output 文件名 支持将状态信息以csv的格式重定向到指定的文件中

-r I/O请求情况

-s swap 显示交换分区使用情况

注: cpu:hiq,siq分别为硬中断和软中断次数。

2. system:int,csw分别为系统的中断次数(interrupt)和上下文切换(context switch)

6.监控
        top
        dstat
        vmstat
        losf
        iostat

lsof -n|awk '{print $2}'| sort |uniq -c| sort -nr|more|grep 5833

dstat -t --top-cpu --top-io-adv --top-bio-adv -n >dstat1226.csv

vmstat 10 >vmstat1226.csv

iostat 10 >iostat1226.csv

top|grep freeswitch >top1226.csv

7.在 Debian6 中 apt-get install sip-tester 所安装的 SIPp 无法回放 pcap 文件,需要自行编译安装,特此记录过程 :
    1)准备工作 apt-get install build-essential libpcap-dev libncurses5-dev
    2)获取 SIPp 源码并解压 wget http://sourceforge.net/projects/sipp/files/sipp/3.2/sipp.svn.tar.gz/download -O sipp.svn.tar.gz
    3)安装编译 cd sipp.svn make pcapplay cp sipp /usr/local/bin/
8.抓取过程协议:linphone,如果无法在电话开始后抓取rtp包,可以过滤rtp之后另存出来,要求.pcap包
9.各性能指标的连锁反应
vmstat中r表示运行队列(就是说有多少个进程真的到CPU),当这个值超过了cpu数量,就可能出现cpu瓶颈
swpd虚拟内存正在使用的虚拟内存大小,单位K

1)free急剧下降
buff和cache被回收下降,但没有好转,依旧需要使用大量swap交换分区swqd,vmstat中等待进程数b增多,读写IO,bi/bo增多
si/so大于0开始从硬盘中读取
cpu等待时间用于IO等待,wa增加内存不足
2)开始使用swpd,该值不为0
siso大于0开始从硬盘读取,IO瓶颈
3)读写IO,bibo增多超过2000
cpu等待时间用于IO等待,wa增加超过20
sy系统调用时间长,io操作频繁会导致增加>30%
wa io等待时间长:
                iowait%<20%    良好
                iowait%<35%    一般
                iowait%>50%    繁忙
4)进一步使用iostat观察
cpu瓶颈1:load,vmstat中r列
     反映为CPU队列长度
     一段时间内,CPU正在处理和等待cpu处理的进程数之和,直接反应了CPU的使用和申请情况
     理想的load average:核数*CPU数*0.7,超出这个值,说明已经到瓶颈了。
                                       CPU个数: grep 'physial id' /proc/cpuinfo |sort -u
                                       核数   : grep 'core id /proc/cpuinfo |sort -u |wc -l

cpu瓶颈2:
         us CPU时间高超过90%
                    涉及到web服务器,cs每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了要考虑调低线程或者进程的数目,例如在apache和nginxp这种web
                    服务器中,一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以将进程或者线程的峰值一直下调、压测,直到cs到一个较小的值,这个进程和线程数就是比较合适的值。
                    系统调用也是,每次调用系统函数,代码就会进入内核空间,导致上下文切换,这是很耗资源也要尽量避免频繁调用系统函数。上下文切换次数过多表示CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,没有充分利用,是不可取的。
         cs可以对apache和nginx线程和进程数限制起到一定参考作用;
较好的趋势:swap使用少,swpd数值低,siso分页读取写入数值趋近于0

SIPP对Freeswitch进行压力测试相关推荐

  1. freeswitch带媒体压力测试方案

    概述 原本的计划是使用sipp完成带媒体压力测试,但是实际测试过程中发现sipp的媒体处理功能有问题(也有可能是我使用的姿势不对). sipp在带媒体的情况下(600路并发开始),出现大量的不响应和响 ...

  2. 基于python的压测工具_基于Python和SIPp的自动化压力测试系统设计和实现

    信斌 王桂花 摘要:首先,分析了现有测试系统的不足,之后,介绍了软件组成和运行环境说明,最后,设计了基于Python和SIPp的自动化压力测试系统,并给出了相关代码.新的测试系统克服了现有测试系统的不 ...

  3. SIP协议和压力测试, SIP callflow图形生成

    SIPp是一个测试SIP协议性能的工具软件.这是一个GPL的开放源码软件.      它包含了一些基本的SipStone用户代理工作流程(UAC和UAS),并可使用INVITE和B YE建立和释放多个 ...

  4. 网站压力测试工具webbench

    webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好,安装使用也特别方便. 1.适用系统:Linux 2.编译安装: 引用 wget htt ...

  5. 二、多并发实现接口压力测试

    一.flsak接口压力测试 import base64 import logging import os, cv2,time import urllib, glob import numpy as n ...

  6. 微软压力测试工具 web application stress

    WEB服务器的压力测试工具~ 115808 2009年8月1日 lbimba 铜牌会员 这里给广大的煤油推荐一个web网站压力测试工具.它可以用来模拟多个用户操作网站,在程序投入运行时,可以用它来进行 ...

  7. python的web压力测试工具-pylot安装使用

    pylot是python编写的一款web压力测试工具.使用比较简单.而且测试结果相对稳定. 这里不得不鄙视一下apache 的ab测试,那结果真是让人蛋疼,同样的url,测试结果飘忽不定,看得人心惊肉 ...

  8. 压力测试 闪存_产品评测 | HPE Nimble AF全闪存系列,诠释真正的高端存储

    随着AI.互联网.大数据等技术快速发展,企业对存储设备的需求已踏上一个更高的级别,高性能.低延时.大容量等多种需求的应用场景愈发常见,在这种情况下,寻求能够满足相应工作负载能力的存储设备已成为企业IT ...

  9. ubuntu mysql 改密码_tpcc-mysql 压力测试

    若是想知道数据库或集群在业务环境中的性能,就需要压测. TPC-C TPC-C 是TPC组织发布的一个测试规范,用来模拟测试复杂的在线事务处理系统(OLTP). 它的测试结果包括每分钟事务数(tpmC ...

最新文章

  1. MySQL --log-slave-updates
  2. 基于.NET SingalR,LayIM2.0实现的web聊天室
  3. c++运算符优先级总结
  4. jenkins部署java项目之小白的笔记
  5. 阿里云 API 签名机制的 Python 实现
  6. 拼多多股价创历史新高:市值再度逼近京东
  7. 算法:从有序数组中移除重复的数据26. Remove Duplicates from Sorted Array
  8. Android连接USB打印机
  9. 【面试题】2021最新Vue面试题汇总
  10. kali的vmtool工具安装
  11. 杭电OJ 第一周 Problem H:小虫子爬爬爬~
  12. 【渝粤题库】陕西师范大学292021 初级宏观经济学 作业(高起专)
  13. 【OS】Linux环境下配置固定IP地址--静态IP地址(不能上外网问题)
  14. 阿里巴巴绩效管理理念和原则
  15. 【Android 教程系列第 27 篇】如何使用 Keytool 工具生成 keystore 签名文件
  16. 学术诚信的重要性_宋瑞:坚持学术诚信 恪守学术道德 捍卫学术尊严
  17. postman 之接口关联
  18. 华为OD机试2023年最新题库(JAVA、Python、C++)
  19. JC24B 2.4G无线模块配置
  20. MAC OS X下的截图方法

热门文章

  1. 微泡排气除污装置有哪几种叫法吗?
  2. VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences
  3. C#中字节数组(byte[])和字符串相互转换
  4. C++HANDLE的理解
  5. 转:关于正太分布和多维正态分布的理解(知乎)
  6. CentOS之VI编辑器的常用命令
  7. python 统计.txt中比较句个数,五元组的个数、以及有多少重复的op(以五元组为统计单位)
  8. LCCUP 22秋季编程大赛
  9. Cisco 2900xl/3500xl/2950/3550密码恢复流程
  10. python高级应用_Python高级应用程序设计任务