Skip to content

在windows上部署sentry遇到性能瓶颈

发布日期:2024-03-01

记录在window上部署sentry的过程


sentry是一个开源的前端监控系统,支持独立部署。接下来将尝试在windows上部署

环境准备

  1. 开启虚拟化,启用 wsl,我安装了 ubuntu 的 wsl

  2. 安装 docker-desktop,会自动安装好 docker 和 docker-compose

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。它允许开发者使用一个名为 docker-compose.yml 的 YAML 文件来配置应用程序所需的所有服务,包括它们的依赖关系、网络和卷。这个文件提供了一种简单的方式来管理整个应用程序的生命周期,包括构建、启动、停止和销毁容器。

自动化安装

  1. 克隆官方仓库 https://github.com/getsentry/self-hosted

  2. 在项目目录下,使用 cmd 输入命令 wsl 进入 ubuntu

  3. 执行 ./install.sh 执行自动安装,期间会问你是否接受错误报告、是否创建用户。创建用户将用于登录 sentry 系统

  4. 等待安装完成,耗时比较长,安装完成后会提示使用 docker-compose up -d 来启动 sentry

up:这是 Docker Compose 的一个子命令,用于创建并启动所有服务。当你执行 docker-compose up 时,Docker Compose 会根据 docker-compose.yml 文件中的定义来创建网络、卷和容器,然后启动这些服务。

-d 或 --detach:这个选项告诉 Docker Compose 在启动服务后立即返回到命令行,而不是保持当前终端窗口与服务的交互。这样,你可以在另一个终端窗口中继续工作,而服务会在后台运行。

启动服务

  1. 启动 docker-desktop,发现镜像中存在很多 unused(dangling) 的悬空镜像,名称为 none。使用 docker images -f dangling=true 命令查看悬空镜像;使用 docker image prune 来删除这些悬空镜像。

  2. 在 wsl 中,在项目根目录下使用 docker-compose up -d 来启动 sentry,此时将会启动50个容器,随着容器的启动,容器的状态会从 created 到完成状态,如果容器未能成功启动,则会产生报错。启动容器的过程也会比较漫长,需要耐心等待。

  3. 如果所有容器都启动成功,则在浏览器中访问 localhost:9000 将会看到 sentry 界面,部署成功。

容器启动失败

在我的部署过程中,并没有如此的顺利。我会在使用 docker-compose up -d 命令后,观察到3个容器无法正常启动,最终报错。此时我打开任务管理器,发现 cpu 占用达到了 100%,内存也几乎占用完了,这应该就是容器无法顺利启动的原因:电脑性能不足!

性能瓶颈

在重复操作多次之后,终于成功启动了一次,进入了sentry界面,此时每一个操作都要等待相当久的返回时间,任务管理器的cpu占用始终是100%,内存占用90%以上。

sentry界面

终止服务

  1. 正常关闭容器,在项目根目录下使用命令 docker-compose down,如果你像我一样cpu冲到100%,这个命令可能连接不上docker,产生以下报错
D:\code\self-hosted>docker-compose down
request returned Internal Server Error for API route and version http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/containers/json?all=1&filters=%7B%22label%22%3A%7B%22com.docker.compose.config-hash%22%3Atrue%2C%22com.docker.compose.oneoff%3DFalse%22%3Atrue%2C%22com.docker.compose.project%3Dsentry-self-hosted%22%3Atrue%7D%7D, check if the server supports the requested API version

此时需要退出 docker-desktop,因为我正常退出一直转圈卡死,就用任务管理器强制退出。但是退出之后cpu占用仍然在100%

  1. 使用命令 wsl --shutdown 关闭 wsl,此时系统占用终于恢复正常

  2. 重新打开 docker-desktop,在项目根目录下使用命令 docker-compose down 关闭所有容器。此时 docker 恢复正常

  3. 正常退出 docker-desktop 后,发现 vmmem 进程仍然存在,占用大量内存。使用命令 wsl --shutdown 关闭 wsl即可。

性能分析

在 sentry 官网上提到独立部署的最低配置如下

  • 2 CPU cores
  • 4 GB RAM

推荐配置如下

  • 4 CPU cores
  • 16 GB RAM
  • 20 GB free disk storage space

我的电脑使用 AMD3600 + 16G内存,其中cpu是6核12线程,理论上是满足推荐配置的。但由于运行在windows虚拟机上可能存在性能损失,加上windows系统本身的cpu使用需求,导致cpu占用达到100%造成性能不足。而内存方面,在开启 docker-desktop 不开启任何容器的情况下,内存占用就有3-4G,加上windows系统本身的内存使用需求,因此内存也不足。

总的来说,sentry 的独立部署非常消耗系统资源,如果系统能力不是特别富裕,使用时需要考虑性能问题。

Power by vitepress