这是一组实用程序,基于Hacker News和GitHub居民的推荐。 列表包括:蝗虫,贝吉塔,Slow_cooker,k6和攻城。 DICE,EA和Buoyant的工程师以及Kubernetes和Load Impact的开发人员都使用它们。 让我们谈谈这些工具。
照片-Victor Freitas-不飞溅压力测试站点的工具。 所有脚本都是用Python编写的。 基于
Flask构建的特殊Web界面允许实时监控结果。 Locust的作者是瑞士工程师,其中DICE和EA公司的员工都参与了计算机游戏的开发和发行。
该工具基于一个有趣的概念:蝗虫(“蝗虫”)模拟了一群昆虫(虚拟用户)的行为,在测试过程中“攻击”了该地点。 使用网络库形成请求以组织并行计算
-gevent 。 这是一个简单测试的示例,该测试在项目的官方网站上提供:
from locust import HttpLocust, TaskSet, task class WebsiteTasks(TaskSet): def on_start(self): self.client.post("/login", { "username": "test_user", "password": "" }) @task def index(self): self.client.get("/") @task def about(self): self.client.get("/about/") class WebsiteUser(HttpLocust): task_set = WebsiteTasks min_wait = 5000 max_wait = 15000
Locust使用请求库。 这个用于标准Python工具的附加组件简化了HTTP和SSL的使用,并使代码更直观。 顺便说一下,请求
文档可以用作在Locust上调试测试的备忘单。
这种压力测试工具已经存在了七年多了。 在这段时间里,围绕它形成了一个广泛的社区-在GitHub上
有超过1万颗星 。 蝗虫用于评估《战地风云》系列游戏的《战日志》网络的性能。 Flask框架的作者Armin Ronacher对该工具
持肯定态度。
在蝗虫的缺点中
,在估计站点的响应时间方面
存在相当低的性能和周期性的错误。 该工具也不知道如何构建图形,但是可以通过以
CSV文件的形式上传结果并在表编辑器中呈现图形来解决问题。
如果您想更深入地了解蝗虫,则应注意
该工具的
文档 。 您也可以在Python Meetup上推荐Wargaming
的 Alexei Romanov的
表演 。 他讨论了如何编写模仿用户行为的脚本。
Go命令行实用程序,用于测试用Go编写的HTTP服务。 可以将其作为库连接以创建自己的负载测试工具。 Vegeta由开放源
代码Sourcegraph平台的一位作者开发,该平台用于查看和浏览Lyft,Uber和Yelp使用的源代码。
Vegeta评估网络资源的功能,以设定的频率“轰炸”他们的请求。 例如,要检查本地主机,只需输入以下命令:
echo "GET http://localhost/" | vegeta attack -duration=5s | tee results.bin | vegeta report
默认情况下,Vegeta与标准命令读取流(stdin)配合使用,因此用于测试的资源是通过echo传输的。 持续时间参数指示测试的持续时间。 该报告将在results.bin文件中生成。 Vegeta可以以文本格式生成报告,但是可以
绘制图形 。 您可以使用以下命令生成它们:
vegeta plot -title=Results results.bin > results-plot.html
围绕Vegeta形成了一个大型社区-GitHub上有
12000万颗星 。 Kubernetes开发人员甚至
使用该工具来评估其平台的性能-然后Vegeta每秒向成千上万个节点的集群生成大约1000万个请求。
描述Vegeta测试的所有功能和标志的文档
位于GitHub上的存储库中 。 您
还可以在此处
找到预编译的可执行文件。
这是用Go编写的服务器负载测试工具。 它是由Buoyant的工程师开发的,该公司为Kubernetes-Linkerd创建了服务网络。 它是Cloud Native Computing Foundation的一部分,
被认为是 Google Istio 的竞争对手。
照片-Joshua Aragon -Unsplash通常,用于负载测试的实用程序会检查服务器的功能,并在短时间内发送尽可能多的请求。 slow_cooker的作者说,他们的工具使您可以长时间评估可预测负载下铁的功。
活跃的专家使用他们的开发来测试Linkerd和其他服务,例如nginx。 乐器还很年轻-他大约三岁-所以直到他有一个大社区。 但是这种情况将来可能会改变,例如,它的存储库已经由Skysanner
分叉 ,Skysanner是一种国际机票搜索服务。
您可以
在GitHub上找到源代码。
一种用于对云中托管的微服务,容器和站点进行负载和回归测试的工具。 它由Go编写,由Load Impact的JavaScript开发人员编写-这是一个用于测试网站“持久性”的应用程序。
当用JavaScript编写测试逻辑和所有设置时,使用k6的基础是作为代码模型的所有内容。 在脚本中,可以将各个步骤进行分组,这对于习惯于遵循BDD原理的人员来说可能很方便。 这是一个这样的小组的例子:
import { group } from "k6"; export default function() { group("user flow: returning user", function() { group("visit homepage", function() {
该工具还可以
记录脚本和
构建图形 -后一个功能在InfluxDB和Grafana上实现。 它与Jenkins,Circle CI,Team City和GitLab等CI系统集成。
用户说k6
并不占用资源,并且具有便捷的API。 但是有几个缺点,特别是k6
不支持 websocket,
也不知道如何在分布式系统上进行测试。 尽管k6开发人员在Hacker News的主题线程中
表示 ,这些功能将在将来出现。
如果您想自己熟悉k6的功能,HN居民建议您从
技术文档开始-详细信息和示例。 如有任何疑问,可以联系
官方论坛 。
围攻允许您加载测试Web服务器。 该实用程序是由工程师Jeff Fulmer(Jeff Fulmer)创建的,因此开发人员可以在接近战斗的条件下检查其代码的资源消耗。 围攻模拟了许多用户对站点的连续访问流,就像使服务器处于“围攻”状态一样,因此也就是工具的名称。
测试之后,该实用程序将显示:扫描时间,每秒事务数,吞吐量,成功和不成功请求的数目,以及响应数为200的请求数。这是Siege生成
的报告
的示例 。
围困在IT社区中相当普遍。 例如,《
NGINX High Performance 》一书中的整个章节都专门介绍了负载测试。 一些云提供商也
使用它。
在Siege的缺点中,可以区分用于计算测试参数的非标准语法和非显而易见的方法-例如,重定向
被视为成功的事务,因此重定向的数量可能超过请求的总数。 如果您想在实践中尝试《围攻》,请学习
在线手册 -系统有些“怪异”。
关于1cloud.ru博客的其他阅读:
Linux内核5.3的新增功能-图形驱动程序,虚拟化和其他更新
为什么主流浏览器开发人员再次拒绝显示子域
苹果为何更改了对应用程序开发人员的要求