前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Sentry SDK 开销测量(Benchmark)

Sentry SDK 开销测量(Benchmark)

作者头像
为少
发布2022-01-25 15:12:36
7070
发布2022-01-25 15:12:36
举报
文章被收录于专栏:黑客下午茶黑客下午茶

动机

  • 关于 SDK 影响的问题无法回答
  • 不知道我们造成了多少开销以及多少开销是可以接受的

这里聚焦的是 Web 服务器的性能监控(跟踪)。

它是如何工作的

Sentry SDK Benchmark 提供了一组以不同编程语言和不同框架实现的预打包 Web 应用程序。

  • https://github.com/getsentry/sentry-sdk-benchmark
  • https://github.com/getsentry/sentry-sdk-benchmark/tree/main/platform

对于 "baseline" 目录中的每个原始应用程序, 在相应的 "instrumented" 目录中都有一个稍作修改的应用程序, 该目录是原始应用程序的副本,添加 Sentry 检测(错误和性能监控)的更改最少。"baseline" 应用程序是来自 TechEmpower Framework Benchmarks 的实现。

  • https://github.com/TechEmpower/FrameworkBenchmarks

基准运行程序(sentry-sdk-benchmark 工具)将一个或多个应用程序作为输入,并连续创建 Docker Compose 项目以测试和收集数据以比较 baselineinstrumented 应用程序。输出显示为 HTML 报告。

每个 Docker Compose 项目负责启动目标 appdatabase 服务器和辅助工具,以生成负载并测量延迟和资源消耗。这些组件作为少数几个 Docker 容器存在:

每个被测应用程序都应该与 PostgreSQL 数据库交互,以响应来自 load generator 的请求,如 Database Updates test 中所述。

  • https://github.com/TechEmpower/FrameworkBenchmarks/wiki/Project-Information-Framework-Tests-Overview#database-updates

load generator 以模拟 "open model" 的固定速率向目标应用程序抛出流量,参阅:Closed versus open system models and their impact on performance and scheduling, Schroeder et al。

  • https://www.cs.cmu.edu/~bianca/nsdi06.pdf

当目标 app 使用 Sentry 进行检测时,Sentry SDK 被配置为将数据从应用程序发送到 Mock Sentry Ingestion Server,这基本上是真实 Sentry 摄入管道的自定义测试替代品。

load generator 还负责编排所有测试步骤并从所有其他组件收集数据(直接或间接通过 Container Metrics Collector)。

用法

您将需要最新版本的 docker(带有 Docker Compose V2)和 go(v1.17 或更高版本)。

  • https://docs.docker.com/compose/cli-command/#installing-compose-v2

编译 benchmark runner:

(可选)通过将 sentry-sdk-benchmark 二进制文件移动到 $PATH 中的目录来安装它,例如:

运行 sentry-sdk-benchmark 工具:

清理资源

sentry-sdk-benchmark 工具在运行后总是会尝试清理资源(容器、镜像和网络)。在最终留下某些东西的情况下,以下命令可以帮助清理资源。

请谨慎使用以下命令,因为其中一些命令可能会影响不一定由 sentry-sdk-benchmark 创建的资源。

Docker 清理命令

列出并删除所有 `Docker Compose` 项目,包括容器、镜像和网络:

代码语言:javascript
复制
docker compose ls -a -q | xargs -tI '{}' docker compose -p '{}' down --remove-orphans --rmi local

列出并删除所有 Docker 容器:

代码语言:javascript
复制
docker ps -a -q | xargs -tn10 docker rm -f

删除所有未使用的 Docker 网络:

代码语言:javascript
复制
docker network prune

删除带有 sentry-sdk-benchmark 标签的镜像:

代码语言:javascript
复制
docker images -f "label=io.sentry.sentry-sdk-benchmark" -q | sort -u | xargs -tn10 docker rmi -f

删除所有悬空(未标记)镜像:

代码语言:javascript
复制
docker images -f "dangling=true" -q | xargs -tn10 docker rmi -f

添加更多平台

参阅 platform/README.md。

  • https://github.com/getsentry/sentry-sdk-benchmark/blob/main/platform/README.md
本文参与?腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-24,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 黑客下午茶 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体同步曝光计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 动机
  • 它是如何工作的
  • 用法
  • 清理资源
  • 添加更多平台
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com