SIPP对Freeswitch进行压力测试
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进行压力测试相关推荐
- freeswitch带媒体压力测试方案
概述 原本的计划是使用sipp完成带媒体压力测试,但是实际测试过程中发现sipp的媒体处理功能有问题(也有可能是我使用的姿势不对). sipp在带媒体的情况下(600路并发开始),出现大量的不响应和响 ...
- 基于python的压测工具_基于Python和SIPp的自动化压力测试系统设计和实现
信斌 王桂花 摘要:首先,分析了现有测试系统的不足,之后,介绍了软件组成和运行环境说明,最后,设计了基于Python和SIPp的自动化压力测试系统,并给出了相关代码.新的测试系统克服了现有测试系统的不 ...
- SIP协议和压力测试, SIP callflow图形生成
SIPp是一个测试SIP协议性能的工具软件.这是一个GPL的开放源码软件. 它包含了一些基本的SipStone用户代理工作流程(UAC和UAS),并可使用INVITE和B YE建立和释放多个 ...
- 网站压力测试工具webbench
webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好,安装使用也特别方便. 1.适用系统:Linux 2.编译安装: 引用 wget htt ...
- 二、多并发实现接口压力测试
一.flsak接口压力测试 import base64 import logging import os, cv2,time import urllib, glob import numpy as n ...
- 微软压力测试工具 web application stress
WEB服务器的压力测试工具~ 115808 2009年8月1日 lbimba 铜牌会员 这里给广大的煤油推荐一个web网站压力测试工具.它可以用来模拟多个用户操作网站,在程序投入运行时,可以用它来进行 ...
- python的web压力测试工具-pylot安装使用
pylot是python编写的一款web压力测试工具.使用比较简单.而且测试结果相对稳定. 这里不得不鄙视一下apache 的ab测试,那结果真是让人蛋疼,同样的url,测试结果飘忽不定,看得人心惊肉 ...
- 压力测试 闪存_产品评测 | HPE Nimble AF全闪存系列,诠释真正的高端存储
随着AI.互联网.大数据等技术快速发展,企业对存储设备的需求已踏上一个更高的级别,高性能.低延时.大容量等多种需求的应用场景愈发常见,在这种情况下,寻求能够满足相应工作负载能力的存储设备已成为企业IT ...
- ubuntu mysql 改密码_tpcc-mysql 压力测试
若是想知道数据库或集群在业务环境中的性能,就需要压测. TPC-C TPC-C 是TPC组织发布的一个测试规范,用来模拟测试复杂的在线事务处理系统(OLTP). 它的测试结果包括每分钟事务数(tpmC ...
最新文章
- MySQL --log-slave-updates
- 基于.NET SingalR,LayIM2.0实现的web聊天室
- c++运算符优先级总结
- jenkins部署java项目之小白的笔记
- 阿里云 API 签名机制的 Python 实现
- 拼多多股价创历史新高:市值再度逼近京东
- 算法:从有序数组中移除重复的数据26. Remove Duplicates from Sorted Array
- Android连接USB打印机
- 【面试题】2021最新Vue面试题汇总
- kali的vmtool工具安装
- 杭电OJ 第一周 Problem H:小虫子爬爬爬~
- 【渝粤题库】陕西师范大学292021 初级宏观经济学 作业(高起专)
- 【OS】Linux环境下配置固定IP地址--静态IP地址(不能上外网问题)
- 阿里巴巴绩效管理理念和原则
- 【Android 教程系列第 27 篇】如何使用 Keytool 工具生成 keystore 签名文件
- 学术诚信的重要性_宋瑞:坚持学术诚信 恪守学术道德 捍卫学术尊严
- postman 之接口关联
- 华为OD机试2023年最新题库(JAVA、Python、C++)
- JC24B 2.4G无线模块配置
- MAC OS X下的截图方法
热门文章
- 微泡排气除污装置有哪几种叫法吗?
- VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences
- C#中字节数组(byte[])和字符串相互转换
- C++HANDLE的理解
- 转:关于正太分布和多维正态分布的理解(知乎)
- CentOS之VI编辑器的常用命令
- python 统计.txt中比较句个数,五元组的个数、以及有多少重复的op(以五元组为统计单位)
- LCCUP 22秋季编程大赛
- Cisco 2900xl/3500xl/2950/3550密码恢复流程
- python高级应用_Python高级应用程序设计任务