ipv6测试工具-支持ipv6的web压力测试工具curl-load
最近在测试ipv6网络设备,发现支持ipv6测试工具还有点少,于是各种折腾。
备注:对于ipv6组网及ipv6网站架设这里就不累赘了,大家可以网上搜索,现已知的IIS6.0及以上支持IPv6,apache 2.0(Linux版)以上支持,nginx支持。windows 2003的DNS不支持ipv6,2008中的dns支持ipv6。
1、前置条件
(1)本地环境的要求
本地环境
[root@dr101 curl-loader-0.56]# cat /etc/redhat-release
CentOS release 6.2 (Final)
[root@dr101 curl-loader-0.56]#
(2)要求安装SSL相关包,gcc、make等工具才行
在CentOS下安装直接使用yum工具来安装即可,保证你的机器可以上外网
yum install gcc make openssl
官方说明查看地址:
http://curl-loader.sourceforge.net/doc/fast.html
Build it using general C development environment with bash, gcc compiler (3 or 4 series), make, etc on a linux machine.
Building pre-requirements are:
a. openssl binaries;
b. openssl development package with include files (on debian package libssl-dev);
curl-loader介绍
curl-loader(也被称为“omes-NIK”和“davilka”)是一个开源的C语言编写的工具,模拟应用负载和成千上万的几十万人的HTTP / HTTPS和FTP/ FTPS的客户端应用程序的行为,每个有其自己的源IP地址。相反,其他curl-loader使用真正的C编写的客户端协议栈,即libcurl和TLS/ openssl的SSL的HTTP和FTP协议栈,支持登录和验证口味和模拟用户行为的工具。
(3)ipv6地址配置
此处以我测试的系统为例
[root@dr101 curl-loader-0.56]# cat /etc/sysconfig/network-scripts/ifcfg-Auto_eth2
HWADDR=00:0C:29:09:F6:42
TYPE=Ethernet
BOOTPROTO=none
IPADDR=192.168.202.101
PREFIX=24
GATEWAY=192.168.202.1
DNS1=202.102.192.68#如果你有ipv6的DNS,可以将ipv6的DNS也加上,这样后面可以使用域名进行压力测试
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=yes #修改为yes
IPVADDR=fc00:0:0:202::101 #添加ipv6地址,注意IPVADDR不是IPV6ADDR,有点怪异
IPV6_DEFAULTGW=fc00:0:0:202::1#添加默认IPv6网关
NAME="Auto eth2"
UUID=4d4bee9e-f139-4ab0-95e0-57fc7c11cc37
ONBOOT=yes
IPV6_AUTOCONF=no#关闭IPv6自动配置
IPV6ADDR=fc00:0:0:202::101/64#再次设置ipv6地址
IPV6_DEFROUTE=yes#开启ipv6默认路由
IPV6_FAILURE_FATAL=no
GATEWAY=fc00:0:0:202::1#再次设置IPv6网关
[root@dr101 curl-loader-0.56]# ifconfig
eth2 Link encap:Ethernet HWaddr 00:0C:29:09:F6:42
inet addr:192.168.202.101 Bcast:192.168.202.255 Mask:255.255.255.0
inet6 addr: fc00:0:0:202::101/64 Scope:Global
inet6 addr: fe80::20c:29ff:fe09:f642/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:5652 errors:0 dropped:0 overruns:0 frame:0
TX packets:5263 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:604459 (590.2 KiB) TX bytes:1015130 (991.3 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:76 errors:0 dropped:0 overruns:0 frame:0
TX packets:76 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:5280 (5.1 KiB) TX bytes:5280 (5.1 KiB)
[root@dr101 curl-loader-0.56]#
2、下载地址
官方下载地址:http://sourceforge.net/projects/curl-loader/files/curl-loader/
[root@dr101 mysoft]# wget http://ncu.dl.sourceforge.net/project/curl-loader/curl-loader-stable/curl-loader-0.56/curl-loader-0.56.tar.bz2
[root@dr101 mysoft]# tar jvxf curl-loader-0.56.tar.bz2
3、安装
(1)注意,如要是curl-load支持ipv6必须在安装即make之前修改Makefile文件中的如下内容
修改Makefile
将--disable-ipv6改为--enable-ipv6
[root@dr101 curl-loader-0.56]# vi Makefile
# To enable IPv6 change --disable-ipv6 to --enable-ipv6
$(LIBCURL):
cd ./packages; tar jxfv curl-$(CURL_VER).tar.bz2; ln -sf curl-$(CURL_VER) curl; \
patch -d curl -p1 < ../patches/curl-trace-info-error.patch
mkdir -p $(CURL_BUILD);
cd $(CURL_BUILD); ../../packages/curl/configure --prefix=$(CURL_BUILD) \
--without-libidn \
--without-libssh2 \
--disable-ldap \
# To enable IPv6 change --disable-ipv6 to --enable-ipv6#这里提示如果要使curl-load支持ipv6需要开启--enable-ipv6
$(LIBCURL):
cd ./packages; tar jxfv curl-$(CURL_VER).tar.bz2; ln -sf curl-$(CURL_VER) curl; \
patch -d curl -p1 < ../patches/curl-trace-info-error.patch
mkdir -p $(CURL_BUILD);
cd $(CURL_BUILD); ../../packages/curl/configure --prefix=$(CURL_BUILD) \
--without-libidn \
--without-libssh2 \
--disable-ldap \
--enable-ipv6 \#这里默认是--disable-ipv6,需要修改为--enable-ipv6
--enable-thread \
--with-random=/dev/urandom \
--with-ssl=/usr/include/openssl \
--enable-shared=no \
--enable-ares=$(CARES_MAKE_DIR) \
如果不理解,可以看官方文档,即查看解压后文档中的README,并搜索到ipv6:(E文还是要好好学的)
[root@202 curl-loader-0.56]# vi README
NETMASK - netmask for the loading clients IP-addresses (from IP_ADDR_MIN to
IP_ADDR_MAX). For IPv4 you can use either quad-dotted netmask string or CIDR
number from 0-32. For IPv6 only CIDR values from 0 to 128 are supported.
To enable IPv6 change --disable-ipv6 to --enable-ipv6 in Makefile
(2)make and make install
[root@dr101 curl-loader-0.56]# make
[root@dr101 curl-loader-0.56]# make install
mkdir -p /usr/bin
mkdir -p /usr/share/man/man1
mkdir -p /usr/share/man/man5
mkdir -p /usr/share/doc/curl-loader/
cp -f curl-loader /usr/bin
cp -f doc/curl-loader.1 /usr/share/man/man1/
cp -f doc/curl-loader-config.5 /usr/share/man/man5/
cp -f doc/* /usr/share/doc/curl-loader/
cp -rf conf-examples /usr/share/doc/curl-loader/
4、使用curl-load进行测试
由于curl-load没用进行configure步骤,即没有指定安装目录,默认就是当前解压目录,比如我这里的/home/mysoft/curl-load-0.56
(1)配置文件存放路径
[root@dr101 conf-examples]# pwd
/home/mysoft/curl-loader-0.56/conf-examples
[root@dr101 conf-examples]# ls
10K.conf https.conf
60K.conf ipv6.conf
bax.conf log-hdr-body.conf
bax-login-logoff-noncycling.conf login-uas-cycling.conf
bax-logs.conf login-uas-logoff-cycling.conf
big-load.conf multipart-formdata-post.conf
bulk.conf post-form-tokens-fr-file.conf
bulk-dual-url.conf post-xml.conf
credentials.cred put.conf
custom-hdrs.conf random_file_records.conf
delete.conf rate-limit.conf
fetch-probability.conf resp-errors.conf
fetch-probability-once.conf some.xml
ftp.conf timers-random-range.conf
ftp-http.conf url-randomize.conf
ftp-upload.conf url-template-file.txt
get-forms.conf url-template-fr-file.conf
get-post-login.conf url-template-resp-dynamic.conf
get-post-login-cycling.conf
[root@dr101 conf-examples]#
(2)修改ipv6配置文件
本次主要是使用curl-load进行ipv6 web服务器的测试工作,于是修改ipv6.conf文件
[root@dr101 conf-examples]# vi ipv6.conf
########### GENERAL SECTION ################################
BATCH_NAME= ipv6
CLIENTS_NUM_MAX = 20 #10000
INTERFACE =eth2 #需要修改为你进行ipv6通信的接口,不知道了,用ifconfig查看
NETMASK=64
IP_ADDR_MIN= fc00:0:0:202::111 #2001:db8:fff5:6::101,IP_ADDR_MIN &MAX是用来指定ipv6地址范围的,必须和物理接口的ipv6地址在一个网段,同时没有被其他主机使用
IP_ADDR_MAX= fc00:0:0:202::130 #2001:db8:fff5:6::103 #2001:db8:fff5:ffff::1
IP_SHARED_NUM=20 #上面写了地址范围,但是不是每个地址都会用上的,这里就是指明使用上面ipv6地址范围中多少个地址用来进行测试,curl-load会在本地网卡上绑定一批ipv6的地址
CYCLES_NUM= -1
URLS_NUM = 1
########### URL SECTION ####################################
URL= http://[fc00:0:0:216::11]/hunlian.htm #http://ip6-localhost/apache2-default/index.html 填写要测试的URL,当然URL也可以是一个文件中的多个url,注意ipv6webURL的写法,如果你使用了域名,可以直接用域名进行测试
REQUEST_TYPE=GET
TIMER_URL_COMPLETION = 0 # In msec. When positive, Now it is enforced by cancelling url fetch on timeout
TIMER_AFTER_URL_SLEEP =300 #默认为1000
(3)下面进行简单测试
[root@dr101 curl-loader-0.56]# ./curl-loader -f conf-examples/ipv6.conf
会先绑定一下ipv6地址到eth2上
这下err的错误少了,有了2XX即成功的请求了
Interval stats (latest:3 sec, clients:20, CAPS-curr:159):
H/F Req:480,1xx:0,2xx:480,3xx:0,4xx:0,5xx:0,Err:0,T-Err:0,D:2ms,D-2xx:2ms,Ti:134400B/s,To:21120B/s
H/F/S Req:0,1xx:0,2xx:0,3xx:0,4xx:0,5xx:0,Err:0,T-Err:0,D:0ms,D-2xx:0ms,Ti:0B/s,To:0B/s
--------------------------------------------------------------------------------
Summary stats (runs:24 secs, CAPS-average:172):
H/F Req:3778,1xx:0,2xx:3778,3xx:0,4xx:0,5xx:0,Err:353,T-Err:0,D:1ms,D-2xx:1ms,Ti:132230B/s,To:20779B/s
H/F/S Req:0,1xx:0,2xx:0,3xx:0,4xx:0,5xx:0,Err:0,T-Err:0,D:0ms,D-2xx:0ms,Ti:0B/s,To:0B/s
=================================================================================
Manual: clients:max[20],curr[20]. Inc num: [+|*].
=================================================================================
ctrl+c来结束测试
此时再开窗口,可以看到接口上绑定了很多ipv6的地址就可以了
[root@dr101 ~]# ifconfig
eth2 Link encap:Ethernet HWaddr 00:0C:29:09:F6:42
inet addr:192.168.202.101 Bcast:192.168.202.255 Mask:255.255.255.0
inet6 addr: fc00:0:0:202::123/64 Scope:Global
---------------------------------------------华丽的分割线----------------------------------
当然还有个网站可以直接做IPv6 连接测试
IPv6 测试 (test-ipv6.com)
ipv6测试工具-支持ipv6的web压力测试工具curl-load相关推荐
- python的web压力测试工具-pylot安装使用
pylot是python编写的一款web压力测试工具.使用比较简单.而且测试结果相对稳定. 这里不得不鄙视一下apache 的ab测试,那结果真是让人蛋疼,同样的url,测试结果飘忽不定,看得人心惊肉 ...
- asp.net core系列 67 Web压力测试工具WCAT
asp.net core系列 67 Web压力测试工具WCAT 原文:asp.net core系列 67 Web压力测试工具WCAT 一.介绍 最近搭建了一套CQRS框架,需要在投入开发前,进行必要的 ...
- jmetter持续时间_【转】Jmeter做web压力测试时设置持续时间注意点
头一回使用jmeter做web的压力测试,遇到个很莫名其妙的问题,不管我的线程组怎么设置,它就是执行一次就结束了. 设置循环次数为300,不使用调度器--〉执行一次就结束了,循环次数未生效 设置循环次 ...
- (转)用mysql自带工具mysqlslap对数据库进行压力测试
http://aolens.blog.51cto.com/7021142/1901557-------用mysql自带工具mysqlslap对数据库进行压力测试 mysqlslap是mysql自带的工 ...
- 压力测试时软件崩溃怎么办,完善压力测试 避免系统崩溃恶果
压力测试对系统的重要作用 我们对应用程序进行压力测试时经常会出现这种情况,就是测试到了最后却发现不明白测试结果有什么意义?实际上,当我们都不明白压力测试的意义时,我们就不能设计出各种极限测试用例. 压 ...
- AIDA64压力测试教程,AIDA64压力测试多长时间,AIDA64压力测试结果怎么看
硬件管理工具AIDA64功能全面专业,操作简便易学,使用AIDA64进行系统稳定性测试逐渐成为更多用户的选择.可能有很多用户对如何使用AIDA64进行系统稳定性测试不太了解,系统稳定性测试也称为压力测 ...
- 网站开启 IPv6 访问,测试是否支持 IPV6
一.分配 IPv6 地址 如果你的服务器支持 IPv6 ,但是在创建的时候没有添加 IPv6 地址,请先添加后再操作. 不同服务器厂商添加方法可能不一样,可咨询客服. 根据IPv6 规范,必须要有两个 ...
- 十个免费的WEB压力测试工具
两天,jnj在本站发布了<如何在低速率网络中测试 Web 应用>,那是测试网络不好的情况.而下面是十个免费的可以用来进行Web的负载/压力测试的工具,这样,你就可以知道你的服务器以及你的W ...
- Siege(开源Web压力测试工具)——多线程编程最佳实例
在英语中,"Siege"意为围攻.包围.同时Siege也是一款使用纯C语言编写的开源WEB压测工具,适合在GNU/Linux上运行,并且具有较强的可移植性.之所以说它是多线程编程的 ...
- 十大Web压力测试工具
下面是十个免费的可以用来进行Web的负载/压力测试的工具,这样,你就可以知道你的服务器以及你的WEB应用能够顶得住多少的并发量,以及你的网站的性能. Grinder – Grinder是一个开源的JV ...
最新文章
- 山东华为服务器安装系统,山东云服务器平台安装
- java019异常、File类
- 计算机网络于20世纪60年代萌芽,计算机网络的发展经过哪几个阶段?
- 大数据数据科学家常用面试题_进行数据科学工作面试
- 程序员curd编程是什么_为什么许多程序员讨厌结对编程?
- python生成api文档_sphinx生成python文档
- 花书+吴恩达深度学习(十一)卷积神经网络 CNN 之池化层
- PHP不仅仅是PHP
- 国产开源数据可视化套件Cboard使用
- max-min 不等式(minimax inequality)
- win7系统下使用虚拟机安装专利电子申请客户端(CPC软件)以及专利文件生成过程
- Sublime Text自定制代码片段之 快速生成html结构
- 【每日一题】 480. 滑动窗口中位数
- 计蒜客: 德克萨斯长角牛 (最短路)
- fuz--2128(最长子串)
- 5G室内定位来了,化工厂人员定位,电厂室内定位都有用它!-新导智能
- Python教程: ‘==‘ 与‘is‘ 以及它们背后的小秘密
- 全能IDE VsCode
- jsp的内置对象有哪些,四大作用域有哪些??
- html文字注释,css如何注释?