置顶声明:下面的内容来自于赵永明的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

使用jtest工具压测Apache Traffic Server相关推荐

  1. ab压测- Apache HTTP server benchmarking tool

    文章目录 1.1 原理 1.2 部署 1.3 语法和参数解释 1.4 示例 1.1 原理   ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问.它的测试目标是基于URL,因此 ...

  2. 在CentOS 6.3 64bit上为Apache Traffic Server 4.2.3挂载SSD并压测

    下面的安装假定是以root用户身份进行的,Linux服务器已经安装好系统,磁盘已经做好分区. 首先需要认识我们的Linux服务器的硬件配置和软件情况 硬件配置: DELL R720 2U服务器 CPU ...

  3. Apache Traffic Server 5.3.2及6.2.1的使用初探索

    Records-config详细参考:http://www.safecdn.cn/2017/01/records-config-2/ 快速安装及使用参考: http://www.cnblogs.com ...

  4. Apache Traffic Server安装配置

    介绍 Apache Traffic Server(ATS或TS)是一个高性能的.模块化的 HTTP 代理和缓存服务器.Traffic Server 最初是 Inktomi 公司的商业产品,该公司在 2 ...

  5. Apache Traffic Server 简介

    1. 介绍 Apache Traffic Server(ATS或TS)是一个高性能的.模块化的 HTTP 代理和缓存服务器. 与 Nginx 和 Squid 类似.它通过将频繁访问的信息缓存在网络的边 ...

  6. Ubuntu 12.04 64bit上安装Apache Traffic Server 4.1.2

    说明: 对于企业级服务器来说,一般是使用Redhat或是CentOS上来跑Apache traffic server作为代理缓存服务器, 一般使用Ubuntu的机会很少,我这里探讨安装在Ubuntu ...

  7. proxyServer squid / varnish / apache traffic server / ATS

    apache traffic server http://gwan.com/benchmark/index.html http://zymlinux.net/  赵永明(阿里) /  旺旺群:7543 ...

  8. Apache Traffic Server管理工具

    Traffic Line是命令行程序,可以用来快速监视 Traffic Server 的性能和网络流量,也能配置 TS. Traffic Shell也是命令行工具,进入该 shell 后有自己一套语法 ...

  9. 利用wrk工具压测腾讯CLB

    可以做压测的工具有好多,ab.jmeter,此处选用wrk进行压测 环境 一台CLB实例(在腾讯云平台上创建) 四台RS服务器(后端提供web服务的机器,在腾讯云上创建CVM云主机) 两台压测客户端( ...

最新文章

  1. 张亚勤谈数字化3.0:由物理与生物世界的数字化构成 | WIC
  2. R语言可视化分面图、假设检验分组t检验、可视化单变量分组分面箱图(faceting bar plot)、添加误差条(error bar)、添加p值、添加抖动数据点(jitter points)
  3. BZOJ 2947 Poi2000 促销 set
  4. oracle DBA 常用表和视图
  5. 【转】【C#】无边框窗体移动的三种方法
  6. tensorflow filter_variables
  7. DBA基础系列SQL Server 2014:2. SQL Server用户数据库初始化配置
  8. linux3.4.2移植总结(s3c2440)
  9. Java-进阶:Java-File--IO—1
  10. php说明代码怎么写,代码怎么写 - 起步 - PHP基础 - KK的小故事
  11. IDEA快捷键的使用成就手速之旅(要想手速变得快,快捷练习必须刚)
  12. chrome html5 mp4,HTML5 Video Chrome - ffmpeg - mp4 working in all but Chrome
  13. c语言代码re通常什么错误,求帮助 C语言realloc和free触发断点的问题
  14. 悬挂缩进 java,WORD上机练习题目
  15. 蓝桥杯c语言b组试题及答案,2014蓝桥杯C语言本科B组预赛试题
  16. 第三方API的简单调用
  17. 强势破圈!时尚COSMO联合百度与小红书发布中国美妆地图、美妆种草度白皮书
  18. pythonurllib新浪微博_定向爬虫 - Python模拟新浪微博登录(示例代码)
  19. 中学-综合素质【1】
  20. CF949D Curfew

热门文章

  1. 机器学习入门(05)— 使用 NumPy 实现 3 层简单神经网络
  2. java.sql.Exception:setString 只能处理少于 32766 个字符的字符串
  3. BestCoder Round #68 (div.2) 1002 tree
  4. 树形结构在关系数据库中的设计
  5. 专题8-Linux系统调用
  6. 简单是可靠的先决条件
  7. ORB_SLAM2中Tracking线程
  8. es日期format_elasticsearch存储日期格式字段
  9. java多线程w3c_Java创建多线程的三种方式
  10. android都图片mat_Android内存泄露整理