查看原文
其他

代码级干货分享 | Docker+Tsung百万并发压测实践

2016-03-27 庞铮 数人云

2016年3月27日下午,数人云线下分享活动——“百万并发”背后的架构实践火热进行中,数人云运维负责人庞铮正在与大家分享《数人云:分布式百万并发测试实践》,小数第一时间将百万并发的相关技术方法奉上,让大家即使不在现场,也能一睹为快。


1 百万压测使用TSUNG的背景信息


数人云此次通过清华OCP实验室的机器进行100w压测,之前使用的 locust 对于超线程支持以及本身性能问题(python),无法在现有硬件资源基础上达到需求,所以改用Tsung进行测试。


2 什么是TSUNG


参考Tsung 1.6.0 中文手册 参考Tsung 1.6.0 documentation


3 配置文件使用


参考配置文件


4 架构说明


4.1 架构图




4.2 架构图解释


tsung master 通过 ssh 对 slave 操作,集群之间通讯使用的是 erlang 的 epmd.


执行步骤:


  • 首先将 tsung 进行 docker mesos化

    • 安装 ssh

    • 安装 tsung

    • 配置文件 mesos 化

  • 其次调用数人云 api 将 tsung 发布

    • api 调用脚本


4.3 加压结构



4.4 程序架构说明


tsung 是个分布式的压测工具,已单个硬件作为程序说明。


  • 每个 tsung 的客户端就是一个 slave 主机,单 ip 可以承载 6 w 压力,对于普通服务器压力瓶颈在 cpu

  • 每个 slave 上的 cpu 就是 tsung node(节点),虽然erlang 支持 smp 但是官方手册说明想要好性能,必须划分cpu

  • 每个 node 上面可以承载很多个虚拟用户

  • slave 可以平扩,增大加压端


5 部署

( 以下省略代码部分,详细请点击“阅读原文”查看文档。)


5.1 TSUNG DOCKER 基础构建


5.2 TSUNG DOCKER 构建


5.3 发布 TSUNG


5.3.1 configserver 文件准备


5.3.2 数人云 API 准备


5.3.3 发布 configserver 脚本


5.3.4 发布 tsung-slave 脚本


5.3.5 发布承压服务脚本(镜像可用nginx代替)


5.3.6 生成用力


5.3.7 发布 tsung-master 脚本


5.3.8 设置权限


5.3.9 数人云 api 发布流程


  • 检查 configserver 文件准备

    • ssh 秘钥对(注意权限)

    • filelist 下载配置列表

    • ssh_config

  • 数人云 API 准备

    • 变量抽离

    • 获取数人云 TOKEN

  • 发布 configserver

  • 发布 tsung-slave

  • 发布承压服务

  • 生成用力

  • 获取 marathon task ID

  • tsung.xml

    • 生成压测用力脚本

    • 检查用力文

  • 发布 tsung master

  • 登陆 数人云查看 master 启动结果

  • 登陆 tsung 实时压测页面进行查看压测结果

    • 游览器检查

      游览器打开:http://$TSUNG_MASTER_IP:8091 查看压测结果,机器越多需要等待时间越长,因为需要加载服务。

    • 日志检查

      进入数人云日志查询 -> 选择集群名 -> 选择应用名 -> 点击查询,看到如下日志,说明正常运行。



6 注意事项


  • 每个压力测试机单ip加压6W,可以通过增加ip数量增大这个值

  • 加压力端需要调节文件句柄

  • 集群大的时候,有时候用力一次加载不上,需要重复加载,问题未知

  • 时间服务很重要

  • master 当机可能是因为 slave 端 ssh 异常,检查

  • centos 镜像 ssh 服务不兼容主机ubuntu aufs 存储问题


7 最终百万压测


7.1 配置


  • 加压端

    • tsung 客户端加压机

    • 数量 1

    • cpu 40核超线程

    • mem 141G

    • network 万兆网络

    • 完全没瓶颈

    • docker host模式

    • docker 下发1个(每台1个)

    • tsung 控制器

    • 数量 20

    • cpu 40核超线程

    • mem 141G

    • network 万兆网络

    • cpu 消耗 不到瓶颈

    • docker host模式

    • docker 下发20个(每台1个)


  • 转发

    • haproxy

    • 数量 4

    • cpu 48核超线程

    • mem 141G

    • network 万兆网络

    • cpu 消耗超高-瓶颈

    • 内存消耗 将尽20g

    • 实体模式


  • 承压

    • nginx

    • 数量 6

    • cpu 32核超线程

    • mem 141G

    • network 万兆网络

    • cpu 消耗超高

    • mem 消耗10g

    • docker nat模式

    • docker 下发48个(每台8个,折算48w并发连接)



7.2 最终结果


数人云用Tsung模拟每秒钟100万个用户的并发请求

 


纵坐标- 绿色代表用户数,蓝色代表链接数

横坐标- 时间轴,单位秒


Tsung百万并发下的处理能力



纵坐标- 绿色代表成功处理数量,蓝色代表失败数量

横坐标- 时间轴,单位秒



小数提示:点击下方“阅读原文”可查看完整文档。

微信号:dmesos

数人云

将应用弹性做到极致


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存