您的位置:首页 > 运维架构 > Apache

使用jtest工具压测Apache Traffic Server

2014-06-20 17:44 225 查看
置顶声明:下面的内容来自于赵永明的ATS博客, 本文是在他的指导和自身实践基础上整理而成.这里对豪哥的无私热心帮助表示无限感激!

一、概述

1.压力测试的定义

很多情况下,大家都希望在服务器上线前、业务上线前,对业务的支撑能力做一个测试,希望知道自己的改动是不是在进步,是不是能够比较平稳的抗住预期的流量压力,等等,总结下来压力测试的主要用途有:

确定新版本的改进不会引起性能问题

找出业务的单机qps数据,并定义好安全的水位线

使用性能数据作为硬件采购以及预算的参数

更好的理解业务的波动对线上系统的压力

日常开发中,最最有意义的是,找出新代码是否在性能上有回退;找出新的性能改进到底提高了多少。

根据压力的来源,压力测试又会被分为:

实验室仿真压力测试

实验室仿真,在http proxy服务器测试场景下,客户端和服务器端的数据和请求,都是由工具生成的。

业务copy仿真压力测试

显然,如果希望服务器程序真正的能够在线上跑,简单的实验室测试与业务需求肯定是差异非常大,因此就有了为什么不把业务流量复制到系统中来的想法。这也就是所谓的流量复制的压测方式。

2.jtest与ATS压力测试

作为一个高性能的proxy代理服务器,Apache Traffic Server是很难用常用工具进行细致的性能压测的,本文尝试对性能压测进行定义并介绍如何在这种高性能、高并发、大规模的系统中,进行破坏级别的压力测试。

jtest是一个专门用于proxy/cache系统的实验室性能压力测试工具,具有极高的性能。能够同时担当后台服务器和客户端。

ATS系统专用的性能压测工具。

商业的压力测试工具,一般也是一个所谓的盒子,自带客户端、服务器端,能够自己生成模拟流量、copy客户提交流量等,很像目前jtest的模式

最早的jtest被设计为可以分布式的集群上运行,用上层脚本系统起停,来压测一个ATS集群系统,早先的系统并没有考虑像现在这样的多核CPU普遍性。

3.部署原理图

使用jtest进行测试时,不管是否和ATS在同一台物理主机上,jtest都是既充当源服务器,又充当客户端这两种角色,被压测的ATS充当proxy/cache角色,在同一台服务器上。对ATS来说,不管正向代理还是反向代理,都可以使用jtest测试。jtest充当的源站,可以是一个域名,比如“ts.cn”,也可以使用jtest所在主机的hostname。



了解jtest的使用选项



二、jtest和ATS同机压测

jtest作为专门针对ATS的测试,已经就ATS的最简单配置下,做了很多简化的默认参数,以便于用户快速的上手,我们以最简单的本机jtest压测本机的默认配置ATS为例子,介绍最基本的jtest用法:

为了避免测试中出现问题,我们首先确认编译安装后的ATS的records.config中的如下字段值,比如我的主机



当然,我们可以直接在命令行输入下面的命令

hostname

得到这个相同的值。注意,这个值是ATS编译时自动生成的,参见records.config.default中的值



根据这个值,也就是hostname,来设置remap规则。

在默认的空remap.config中添加如下规则

map http://taoyx-ThinkPad-T420:9080/ http://127.0.0.1:9080/
然后在ATS源码中的tools/jtest下面执行下面的命令

./jtest

下面是测试结果



三、jtest和ATS不同机压测

最通常的做法是jtest和ATS分别位于不同的主机上进行压测,这里假设只有一个jtest实例在不同的机器上面,部署环境参考上面的架构图:

被测试的ATS服务器 10.10.110.39上面,监听端口8080

jtest所在的服务器 192.168.90.73,作为源站服务器角色时,监听端口是9080,hostname是90-73.test.local

我们这里压测的并非域名,而仅是上面的hostname,为此在被测试的ATS服务器10.10.110.39的remap.config文件中添加一行

map http://90-73.test.local:9080/ http://192.168.90.73:9080/
然后在jtest所在的服务器上,进入ATS中jtest所在的目录,

cd /usr/local/src/trafficserver-4.1.2/tools/jtest

执行如下命令

./jtest -P 10.10.110.39



四、jtest多实例测试

同上思路,但是修改被测试的ATS配置如下:

在remap.config文件末尾添加如下规则

map http://90-73.test.local:9080/ http://192.168.90.73:9080/

map http:/90-73.test.local:9081/ http://192.168.90.73:9081/
map http://90-73.test.local:9082/ http://192.168.90.73:9082/

在jtest上运行如下命令

./jtest -s 9080 -P 10.10.110.39 & ./jtest -s 9081 -P 10.10.110.39 & ./jtest -s 9082 -P 10.10.110.39



参考文献

[1].永豪,https://blog.zymlinux.net/index.php/archives/906
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: