mcpField
P
pepe

pepe

本地服务
pepe.mhaimdat.com开发工具971 天前更新

关于 pepe

pepe 是一个带实时仪表盘的 HTTP 压测工具,可对 URL 发起请求、用 ping 观察分段延迟,并生成可用于脚本与 CI 的 JSON 报告。适合需要查看容量上限与对比测试结果的开发者和运维人员,并强调自身开销低于被测服务。

主要功能

  1. 01实时仪表盘显示吞吐、延迟分位与状态码
  2. 02pepe ping 按阶段拆解单次请求耗时
  3. 03ramp 模式逐级增压以寻找容量上限
  4. 04支持 OpenAPI、flow 与访问日志回放
  5. 05带护栏的 JSON 报告、退出码与 CI 集成
  6. 06pepe mcp 命令以工具形式提供给 agent

适用场景

  1. 01在发布前对接口进行压力测试并比较两次结果
  2. 02在 CI 中用阈值判断性能回归并在 PR 中评论
  3. 03用 ping 排查 URL 的 DNS、TLS 或首字节延迟问题

MCP 相关

pepe 提供 pepe mcp 命令,将压测模式作为工具暴露给 MCP 客户端或 agent,并沿用启动时设定的护栏限制。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"omarmhaimdat-pepe": {
"command": "uvx",
"args": [
"pepe-http"
]
}
}
}
启动命令uvx pepe-http

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypipepe-http0.57.0
ocighcr.io/omarmhaimdat/pepe:0.57.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Pepe,一个像素风辣椒

pepe

HTTP 负载生成器,配备实时仪表盘,构建成本低于它所测试的服务器。

CI Release Downloads License: MIT Rust 1.85+

安装 · 快速开始 · 功能介绍 · 脚本、CI 和 Agent · pepe 的比较优势 · 文档 · 路线图

pepe 对服务器进行负载测试:实时仪表盘、请求日志和测试结论

pepe 向一个 URL 发送请求,数量可按需设置,并实时展示返回结果:吞吐量、延迟百分位数和热力图、状态码、按原因分类的失败,以及可打开任意请求的日志。运行结束后,它会用简单明了的语言给出结论,并说明时间花在了哪里。它可以接收 curl 命令作为输入,通过逐步增加负载找出目标何时开始跟不上,对 OpenAPI 规范中的每个端点进行负载测试,重放访问日志,还能运行一个前后步骤相互传递数据的请求流程。pepe ping 使用同一引擎,以每秒一个请求的速度运行:绘制 URL 延迟随时间变化的图表,将每次 ping 拆分为 DNS、连接、TLS、首字节和下载阶段,并指出需要关注的内容。

它也很轻量。在 Apple M4 Pro 上,单个线程每秒可发送 160k 个请求;在 Linux 上则可达 400k 个请求。与 wrk 相比,它每个请求消耗的 CPU 和内存更少;CPU 消耗仅为 oha 的四分之一到二分之一,内存消耗不超过其十分之一。pepe 还会告诉你,瓶颈是在它自身,而不是目标服务器。

安装

curl -LsSf https://pepe.mhaimdat.com/install.sh | sh        # macOS and Linux
brew install omarmhaimdat/pepe/pepe                         # Homebrew
nix run github:omarmhaimdat/pepe -- https://example.com     # Nix, without installing
docker run --rm -it ghcr.io/omarmhaimdat/pepe https://example.com
cargo install --locked --git https://github.com/omarmhaimdat/pepe

Windows 用户可在 PowerShell 中运行:powershell -ExecutionPolicy Bypass -c "irm https://pepe.mhaimdat.com/install.ps1 | iex"。每个版本还提供适用于 macOS、Linux 和 Windows 的二进制文件,以及校验和、签名来源证明、Shell 补全脚本和 man 手册页。pepe self-update 可安装最新版本;pepe 每天会检查一次新版本,并在运行结束时告知你。所有内容及详细信息请见安装页面。

快速开始

pepe https://example.com                                     # 100 requests, one per core at a time, and watch
pepe -z 30s -c 50 -m POST -H 'Content-Type: application/json' -d '{"key":"value"}' https://httpbin.org/post
pepe -z 30s --curl -- curl 'https://api.example.com/items' -H 'Authorization: Bearer …'   # from "Copy as cURL"
pepe ping https://example.com --once                         # three pings, then why it is slow, and out
pepe                                                         # the setup screen: every option on a form

在仪表盘中,按 space 可暂停,按 + 和 - 可更改并发数,按 tab 可切换视图,按 enter 可查看请求详情,按 ? 可列出所有按键,按 q 可退出,并在 Shell 中保留测试结论。

功能介绍

命令用途文档
pepe URL进行带实时仪表板的负载测试:负载形态(--number、--duration、--concurrency、--rate、--warmup、--threads)、任意请求头、请求正文或方法、curl 命令、与代码放在一起的 pepe.toml,以及带 --snapshot 的持续负载测试负载测试、仪表板
pepe ping URL…每秒发送一个请求,并在图表中分别显示 DNS、连接、TLS、首字节和下载耗时;支持多个目标、TCP ping、--slo 限制、HTTP/2、证书到期时间,以及指出需要关注事项的诊断结果Ping
pepe ramp URL逐步提高并发数,找出稳定运行的并发级别、吞吐量不再随并发增长的位置、系统崩溃的位置,以及容量估算值阶梯测试
pepe api SPEC从 OpenAPI 3 或 Swagger 2 规范中提取端点,可在屏幕上选择或按标签筛选,并包含相应参数和凭据OpenAPI
pepe flow FILE按顺序发送一系列请求,每一步都使用上一步的结果:登录、获取令牌并使用令牌工作流
pepe replay LOG按真实流量比例将访问日志中的 URL 发送到另一个主机重放
pepe logs FILES查看 nginx 日志中的内容:当前请求速率与每分钟、每小时和每天的请求速率对比、路径、错误,以及实时日志行nginx 日志
pepe compare A B用判定结果中的措辞说明两份报告之间的变化,并附带徽章和 SVG 卡片比较

所有命令的所有标志都列在命令参考中,man pepe 的内容与之相同。

脚本、CI 和 Agent

每种模式都能在无界面的情况下运行,并且专为程序调用而设计:

  • 版本化 JSON 报告,通过 --json 生成(schema_version: 1;pepe schema 会输出各报告的 JSON Schema),其中包含判定结果和诊断结果。不加 --json 时通过管道传递的则是文本判定结果。
  • 有实际含义的退出代码:按要求完成为 0;无法启动或没有任何响应为 1;用法错误或触发护栏为 2;超过限制为 4(--fail-if 'p99 > 300ms'、ping 的 --slo)。
  • 发送任何内容前检查护栏:--allow-host .example.com、--max-requests、--max-rate、--max-concurrency 和 --dry-run;后者会说明将要发送的内容,但不会实际发送。可在 pepe.toml 中配置这些选项。
  • GitHub Action,用于运行测试、将数据写入作业摘要和输出,通过 pepe compare 将拉取请求与其基础分支进行比较,评论结果,并可使作业失败:CI 和 Docker。
  • Prometheus 指标,使用 --metrics :9100,可用于持续负载测试或在 Grafana 中查看长时间 ping 的数据。
  • MCP 服务(pepe mcp),将各种模式作为工具提供给 Agent,并遵循启动时设定的护栏;Agent 首先会读取 AGENTS.md。
- uses: omarmhaimdat/pepe@v0
  with:
    url: https://staging.example.com/api/health
    args: -z 30s -c 20 --fail-if 'p99 > 300ms'
    baseline: auto
    comment: true

pepe 的对比表现

使用 bench/ 中的套件进行测量,测试目标是一个从内存中响应的本地服务,因此测量的是客户端的开销。每 1,000 个请求的 CPU 毫秒数、峰值内存,以及每个工具报告的每秒请求数:

工作负载pepeohavegeta
GET,64 个连接6.2 ms · 9 MB · 160k req/s23.0 ms · 78 MB · 161k req/s90.4 ms · 26 MB · 76k req/s
GET,1,000 个连接6.0 ms · 12 MB · 163k req/s21.6 ms · 101 MB · 147k req/s52.7 ms · 92 MB · 131k req/s
HTTPS,64 个连接6.8 ms · 12 MB · 142k req/s24.8 ms · 60 MB · 156k req/s69.8 ms · 30 MB · 90k req/s

这些是 pepe 在 Apple M4 Pro 上的单线程数据,该设备的环回吞吐量上限约为每秒 175k 个请求。在 Linux 上(4-vCPU arm64 虚拟机,发布时使用的 musl 构建),旁边运行单线程 wrk:

工作负载pepewrkoha
GET,64 个连接2.4 ms · 4.0 MB · 398k req/s3.5 ms · 4.5 MB · 282k req/s6.8 ms · 67 MB · 305k req/s
GET,1,000 个连接3.2 ms · 5.8 MB · 296k req/s4.4 ms · 7.7 MB · 228k req/s5.6 ms · 73 MB · 183k req/s
HTTPS,64 个连接3.3 ms · 6.0 MB · 284k req/s4.5 ms · 10.8 MB · 218k req/s8.1 ms · 42 MB · 250k req/s
1,000 万个请求,256 个连接2.9 ms · 4.5 MB · 343k req/s3.3 ms · 4.6 MB · 304k req/s6.5 ms · 2,404 MB · 316k req/s

所有工作负载的测试结果(包括 pepe 持平而非领先的场景:1,000 个连接时的慢速目标、通过 TLS 传输 16 KB 请求体)、glibc 构建的影响、k6、性能分析,以及测试方法,均见 bench/README.md。当目标可以承受多个线程发送请求时,pepe 会说明这一点,而 --threads auto 会启用这些线程。

文档

完整手册按页面组织,包含所有选项和示例,见 pepe.mhaimdat.com/docs。手册源文件是 docs/ 下的 Markdown 文件;命令参考根据命令定义生成,因此始终与二进制文件保持一致。每个版本的变更记录见 CHANGELOG.md;后续计划按顺序列于 ROADMAP.md。

参与贡献

欢迎提交问题和拉取请求;CONTRIBUTING.md 介绍了构建、测试、生成文件、录制内容、基准测试以及发布流程。

许可证

MIT。请参阅 LICENSE。

致谢

感谢 tokio、rustls、httparse、h2 和 reqwest 提供请求处理支持,感谢 ratatui 和 crossterm 提供仪表盘支持,感谢 clap 提供命令行支持,也感谢 oha、vegeta、wrk 和 k6 成为基准测试表上的好伙伴。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。