你好,这里是 Dotnet 工具箱,定期分享 Dotnet 有趣,实用的工具和组件,希望对您有用!

轻量级压测工具

LoadTestToolbox 是一个使用 C# 开发的轻量级压测工具,基于 .NET 6 版本, 和其他压测工具相比,LoadTestToolbox 安装和使用都非常简单。

LoadTestToolbox 提供了一种可靠的方式来模拟高负载情况,来确定系统的瓶颈和性能极限,并且支持以图片输出压测结果。

如何安装

直接作为 .NET 全局工具安装,执行以下的命令,需要 .NET 6。

dotnet tool install --global LoadTestToolbox

非常简单,LoadTestToolbox 压测工具已经安装成功!

如何使用

LoadTestToolbox 目前包含了三个工具,分别是 drill (钻头), hammer (锤子), nailgun (钉枪)。

drill 钻头

Drill 可以通过在更长的时间内, 以间隔不断的请求,来进行测试应用的长期稳定性。

比如:

ltt drill --url https://www.baidu.com/ --rps 100 --duration 10 --filename chart.png

在上面的命令中,LoadTestToolbox 将每秒发出 100 个请求(以一致的 20 毫秒间隔),持续 10 秒,请求到 www.baidu.com。

完成后,会输出到笛卡尔图的测试结果,并且显示每个请求和对应的响应时间。

输出结果:

Hammer 锤子

Hammer 可以通过指定范围的并发请求,测试接口的性能,并返回每个请求的平均响应时间。

比如:

ltt hammer --url http://www.qq.com --min 1 --max 100 --filename chart.png

上面的命令会同时发出 1 个请求,然后是 2 个、3 个,依此类推,最多是 100 个并发请求。

输出结果

Nailgun 钉枪

Nailgun 可以对指定的接口发起瞬间的大量请求,来测试接口性能。

比如一次性发起 100 个请求:

~$ ltt nailgun --url http://www.qq.com/ --requests 100 --filename chart.png

输出结果

上面就是 LoadTestToolbox 的三个主要工具。

LoadTestToolbox 还支持各种配置,HTTP 请求方法,请求头,请求体等。

开源和跨平台 WebAPI 监控工具

Ketum 是一个跨平台的开源工具,可以让您能够轻松测试和监控网站的运行状况。

Ketum 提供了简单易读的图表来跟踪您网站的运行状况, 包括显示正常运行时间、响应时间和其他测试结果的图表,另外 Ketum 还支持邮件通知。

Ketum 的后端使用了 ABP 框架,前端使用了 Blazor,拿来使用或者学习都是不错的。

截图预览

监控页面

监控详情页面

Terminal.Gui - 适用于 .NET 的跨平台终端 UI 工具包

Terminal.Gui

Terminal.Gui 是一个使用 C# 开发的基于控制台的工具库。这个框架的设计目的是, 在单色终端和支持鼠标的现代彩色终端上, 开发人员也可以非常轻松地进行开发并运行程序。

Terminal.Gui 是跨平台的, 它适用于 Windows、Linux 和 MacOS。

如何使用?

在 .NET Core 项目中安装, 可以使用 dotnet CLI 或者 Nuget。

dotnet add package Terminal.Gui

下面是一个简单的示例:

using Terminal.Gui;

class Demo
{
static int Main()
{
Application.Init(); var n = MessageBox.Query(50, 7,
"Question", "你喜欢这个控制台应用吗?", "Yes", "No"); Application.Shutdown();
return n;
}
}

运行程序后,控制台显示内容如下:

这个代码进行提示并返回一个整数值,它取决于用户选择的值(Yes,No,或者不选择去按 ESC 键)。

还可以通过组合所包含的各种视图来创建更有趣的用户界面。

下面是一个使用用户名和密码进行登录的一个示例。

// A simple Terminal.Gui example in C# - using C# 9.0 Top-level statements

using Terminal.Gui;

Application.Run<ExampleWindow> ();

System.Console.WriteLine ($"Username: {((ExampleWindow)Application.Top).usernameText.Text}");

// Before the application exits, reset Terminal.Gui for clean shutdown
Application.Shutdown (); // Defines a top-level window with border and title
public class ExampleWindow : Window {
public TextField usernameText; public ExampleWindow ()
{
Title = "Example App (Ctrl+Q to quit)"; // Create input components and labels
var usernameLabel = new Label () {
Text = "Username:"
}; usernameText = new TextField ("") {
// Position text field adjacent to the label
X = Pos.Right (usernameLabel) + 1, // Fill remaining horizontal space
Width = Dim.Fill (),
}; var passwordLabel = new Label () {
Text = "Password:",
X = Pos.Left (usernameLabel),
Y = Pos.Bottom (usernameLabel) + 1
}; var passwordText = new TextField ("") {
Secret = true,
// align with the text box above
X = Pos.Left (usernameText),
Y = Pos.Top (passwordLabel),
Width = Dim.Fill (),
}; // Create login button
var btnLogin = new Button () {
Text = "Login",
Y = Pos.Bottom(passwordLabel) + 1,
// center the login button horizontally
X = Pos.Center (),
IsDefault = true,
}; // When login button is clicked display a message popup
btnLogin.Clicked += () => {
if (usernameText.Text == "admin" && passwordText.Text == "password") {
MessageBox.Query ("Logging In", "Login Successful", "Ok");
Application.RequestStop ();
} else {
MessageBox.ErrorQuery ("Logging In", "Incorrect username or password", "Ok");
}
}; // Add the views to the Window
Add (usernameLabel, usernameText, passwordLabel, passwordText, btnLogin);
}
}

运行程序后,输入 admin 和 password,页面显示如下

应用和扩展

Terminal.Gui 的社区非常活跃,已经有很多基于它开发的应用。

Terminal Gui Designer

TerminalGuiDesigner 使用 CodeDom 和 Roslyn 构建,可让您通过拖放来创建复杂的视图,就像您熟悉和喜爱的 WinForms 设计器一样。

Dotnet Dump 分析器

这是一个基于gui.cs 的小型ui,可以和 dotnet dump 一起使用,它能够列出所有受支持的 SOS 命令的输出。

【Dotnet 工具箱】推荐一个使用 C# 开发的轻量级压测工具的更多相关文章

  1. 推荐一个适用于SpringBoot项目的轻量级HTTP客户端框架,快来试试它!

    在SpringBoot项目直接使用okhttp.httpClient或者RestTemplate发起HTTP请求,既繁琐又不方便统一管理.因此,在这里推荐一个适用于SpringBoot项目的轻量级HT ...

  2. SuperBenchmarker一个用.NET编写的压测工具

    0x01 前言 在这之前想必大家对ab(http)与abs(https)也有一些了解,我们今天不去看ab和abs,SuperBenchmarker(sb.exe)是一个压测工具,他是一个受Apache ...

  3. 还在用背单词App?使用Python开发英语单词自测工具,助你逆袭单词王!

    学英语广告 最近也许是刚开学的原因,不管是公众号,还是刷抖音,导出都能看到关于学英语.背单词的广告. 不知道现在学生们背单词买的什么辅导材料.反正我们上学那会,<星火阅读>特别的火.记得当 ...

  4. 推荐一个国外C开发的PHP框架--Phalcon,性能相当好

    本人亲自配置测试后.性能相当不错.不过有一点.使用极不符合国人习惯,甚至和大多数主流PHP框架如Zend Framework,Yii,Ci,Thinkphp都不一样. Phalcon 是一个开源的,全 ...

  5. (原创)发布一个c++11开发的轻量级的并行Task库TaskCpp

    TaskCpp简介 TaskCpp是c++11开发的一个跨平台的并行task库,它的设计思路来源于微软的并行计算库ppl和intel的并行计算库tbb,关于ppl和tbb我在前面有介绍.既然已经有了这 ...

  6. 分享一个自研开发的QA自动化审计工具-Sonar检查

    评价一个系统或软件的质量高低,我始终认为除了需求和设计外,代码质量很重要,一个高质量的系统或软件,并不是被测试出来的,更多的是要靠设计和开发出来的.目前也有很多自动化的测试工具,更多的是从功能和性能角 ...

  7. 推荐一个yaml文件转json文件的在线工具

    YAML的全称是YAML Ain't Markup Language,是一种简洁的非标记语言,以数据为中心,使用空白,缩进,和分行组织数据,从而使得表示更加简洁易读. YAML如今广泛应用于微服务开发 ...

  8. 推荐一个好用的sql版本控制和美化工具SQLToolbelt

    SQL Toolbelt含Red Gate公司目前出品的所有SQL Server工具和新版本.也就是说,当你使用SQL Server数据库工作时,您可以很方便的获得您所需要的一套强大的工具,包括SQL ...

  9. 一个简单http请求的jmeter压测实战流程

    1.新建线程组 2.创建http请求 注意:接口路径中的参数值要写变量 3.创建txt文件,存多个参数值 4.创建csv文件,在csv中上传txt文件 5.variable name填写txt中参数值 ...

  10. 作业2:go实现一个压测工具,具备upload功能

    作业:go实现压测工具,具备upload功能. upload内容是.tar.gz,使用http协议上传. 要求:upload的文件名,http目的地址灵活可配. deadline:2019.4.30

随机推荐

  1. Python网络爬虫原理及实践

    作者:京东物流 田禹 1 网络爬虫 网络爬虫:是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本. 网络爬虫相关技术和框架繁多,针对场景的不同可以选择不同的网络爬虫技术. 2 Scrapy框架( ...

  2. #Python 缺失值的检测与处理,检测部分

    Python  缺失值的检测与处理,分两部分笔记,第一部分是检测缺失值部分

  3. Nginx Web快速入门

    Nginx Web快速入门 目录 Nginx Web快速入门 Nginx概述 为什么选择Nginx服务 Nginx的应用场景 源码安装nginx Yum安装nginx Nginx相关命令总结 Ngin ...

  4. 2023-04-09:使用 Golang 重写的 ffmpeg 示例encode_video.c,实现视频编码并将编码后的数据封装为容器格式,最终写入输出文件。

    2023-04-09:使用 Golang 重写的 ffmpeg 示例encode_video.c,实现视频编码并将编码后的数据封装为容器格式,最终写入输出文件. 答案2023-04-09: 本文介绍的 ...

  5. 2022-08-20:给定区间的范围[xi,yi],xi<=yi,且都是正整数, 找出一个坐标集合set,set中有若干个数字, set要和每个给定的区间,有交集。 求set的最少需要几个数。 比如给

    2022-08-20:给定区间的范围[xi,yi],xi<=yi,且都是正整数, 找出一个坐标集合set,set中有若干个数字, set要和每个给定的区间,有交集. 求set的最少需要几个数. ...

  6. < Python全景系列-2 > Python数据类型大盘点

    <Python全景系列-2> Python数据类型大盘点 欢迎来到我们的系列博客<Python全景系列>!在这个系列中,我们将带领你从Python的基础知识开始,一步步深入到高 ...

  7. 【设计模式】使用 go 语言实现简单工厂模式

    最近在看<大话设计模式>,这本书通过对话形式讲解设计模式的使用场景,有兴趣的可以去看一下. 第一篇讲的是简单工厂模式,要求输入两个数和运算符号,得到运行结果. 这个需求不难,难就难在类要怎 ...

  8. ImportError: cannot import name 'Bar' from 'pyecharts'

    第一步,先确认运行的py文件名称是否为pyecharts.py,如果是,先换个文件名.再运行改过名称后的py文件,不成功就继续往下看. 第二步,在cmd输入pip list,查看当前pyecharts ...

  9. 2023-05-16:给你一个 严格升序排列 的正整数数组 arr 和一个整数 k 。 请你找到这个数组里第 k 个缺失的正整数。 输入:arr = [2,3,4,7,11], k = 5。 输出:9

    2023-05-16:给你一个 严格升序排列 的正整数数组 arr 和一个整数 k . 请你找到这个数组里第 k 个缺失的正整数. 输入:arr = [2,3,4,7,11], k = 5. 输出:9 ...

  10. Solon 用 throw 抛出数据

    此文主要是想在观念上有所拓展.在日常的接口开发时,数据的输出可以有两种方式: 返回(常见) 抛出(可以理解为越级的.越类型的返回) 我们经常会看到类似这样的案例.为了同时支持正常的数据和错误状态,选择 ...