go-stress-testing:go实现的压测工具及多种压测工具介绍
go - stress - testing是一个用go语言实现的压测工具。项目中详细解释了压测相关概念,包括压测类型、名词等。对常见压测工具ab、locust、Jmeter、云压测进行介绍与比较,还展示了...
标签:Github项目go-stress-testing Go语言 单台机器100w连接压测 压测工具 性能测试【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工具自身具有一定优势,如开源、支持多种请求类型压测等。通过不同的实践案例展示了工具的实用性。希望大家在阅读后,如果有任何想法或者建议可以在评论区留言,一起参与讨论。
项目地址
数据统计
数据评估
本站链氪巴士提供的go-stress-testing:go实现的压测工具及多种压测工具介绍都来源于网络,不保证外部链接的准确性和完整性,同时,对于该外部链接的指向,不由链氪巴士实际控制,在2024年12月6日 上午12:00收录时,该网页上的内容,都属于合规合法,后期网页的内容如出现违规,可以直接联系网站管理员进行删除,链氪巴士不承担任何责任。
相关导航
AnotherSteamCommunityFix(简称ASCF)是一个用于临时性修复Steam社区在中国大陆无法访问问题的小工具。由Go语言编写,可在几乎任何系统平台运行。它主要通过修改hosts文件来工作,程序运行时将steamcommunity.com域名指向本地并监听特定端口,退出时恢复hosts文件。使用时有诸多注意事项,如保持程序运行、处理闪退情况、按硬件平台选择合适版本、在Linux/macOS系统下遵循特定使用步骤等。这个工具为遇到Steam社区访问困扰的用户提供了一种可能的解决途径。