链氪巴士
  1. 首页
  2. 站点导航
  3. 文章
  4. 快讯
  5. 软件
  6. 书刊
  7. 关于

go-stress-testing:go实现的压测工具及多种压测工具介绍

go - stress - testing是一个用go语言实现的压测工具。项目中详细解释了压测相关概念,包括压测类型、名词等。对常见压测工具ab、locust、Jmeter、云压测进行介绍与比较,还展示了go - stress - testing的用法、实现方式、针对Golang...

访问官网 →

【Github】项目名:go – stress – testing:go实现的压测工具及多种压测工具介绍

一、项目简介

go – stress – testing是一个用go语言实现的压测工具。该项目不仅介绍了这个工具,还对压测相关概念进行解释,如压测是什么、压测的类型、涉及的名词等。同时,对常见的压测工具ab、locust、Jmeter、云压测进行介绍和比较,展示了go – stress – testing工具的用法、实现方式以及针对Golang web和grpc的压测示例,还有单台机器100w连接压测实战的内容,包含从准备工作到压测数据的分析等一系列过程。

二、项目目的

项目的目的在于通过压测(模拟真实用户的行为),测算出机器的性能(单台机器的QPS),从而推算出系统在承受指定用户数(100W)时,需要多少机器能支撑得住。压测是在上线前为了应对未来可能达到的用户数量的一次预估(提前演练),压测以后通过优化程序的性能或准备充足的机器,来保证用户的体验。

三、核心技术

此压测工具由go语言实现,使用协程模拟单个用户,可以更高效地利用CPU资源。支持压测http、webSocket请求、私有rpc调用。项目源码开源,支持二次开发。

四、实践案例

  1. 对Golang web压测:使用go – stress – testing对部署在同一台机器(CPU为4核,内存16G,硬盘20G SSD,系统CentOS7.6,go版本1.12.9 linux/amd64)上的goserver进行压测,压测命令为./go – stress – testing – linux – c100 – n10000 – uhttp://127.0.0.1:8088/,得到了不错的压测QPS结果。
  2. grpc压测:先启动grpcserver(进入grpcserver目录cd tests/grpc,启动命令gorun main.go),然后回到项目根目录执行gorun main.go – c300 – n1000 – ugrpc://127.0.0.1:8099 – data world进行压测,给出了详细的压测结果耗时、并发数、成功数、失败数、qps等数据。
  3. 单台机器100w连接压测实战:准备了16台压测服务器(CPU为2核,内存8G,硬盘20G,系统CentOS7.6)和1台被压测服务(CPU为4核,内存32G,硬盘20G SSD,系统CentOS7.6)。通过内核优化(如修改程序最大打开文件数等操作)、客户端配置(调整端口范围等),启动Server服务后进行压测,最终实现单台机器100W连接的压测目标,并且在压测过程中和压测后对系统状态(如连接数、内存使用情况等)进行观察和分析。

五、项目总结

该项目全面地介绍了压测相关知识,从概念到工具,从理论到实践。go – stress – testing工具自身具有一定优势,如开源、支持多种请求类型压测等。通过不同的实践案例展示了工具的实用性。希望大家在阅读后,如果有任何想法或者建议可以在评论区留言,一起参与讨论。

项目地址

GitHub链接直达