Loading... > 突然发现自己好像连续几天没有管过博客了,正好最近需要做一次压力测试,索性把这个过程写在 blog 里面,方便后来人学习 ## 方案 本次压力测试采取的方案是:Grafana 面板展示 Metrics + K6,其中 K6 的数据会存入 InfluxDB 时序库。 本次测试的目标是 GuGoTik,项目地址是:[Here!](https://github.com/GuGoOrg/GuGoTik),GuGoTik 里面有一些现成的指标,我们也可以利用它做一个展示的面板~ ## 部署环境 直接上 Docker Compose,由于项目里面使用的 Docker Compose 编排的,且已经有了基础设施,我们加个时序库就ok了~ ```bash docker pull tutum/influxdb ``` 然后手动部署一下: ```bash docker run -d -p 8083:8083 -p 8011:8086 --name influxsrc tutum/influxdb ``` 之所以用 8011 是因为 GuGoTik 开的项目实在是太他妈多了,8086被冲突了 :( 别忘了进到 dashboard 里面了把端口改一下,dashboard 默认用的是8086的 ## 创建环境 创建数据库: ```bash CREATE DATABASE "k6test" ``` 导入 Dashboard 面板,在 Grafana 中选择 `2587` ,并初始化 InfluxDB 的数据面板。 日后需要导出数据时,只需要: ```bash k6 run --out influxdb=http://localhost:8011/k6test test.js ``` ## 开始测试 当然,我们不能只做表面工作,下面来开始我们的性能测试: 让我们对 Feed 发起一次压力测试: ```js import { sleep, check } from 'k6'; import http from 'k6/http'; export const options = { scenarios: { feed: { executor: 'ramping-vus', startVUs: 0, gracefulStop: '30s', stages: [ { target: 1000, duration: '20s' }, { target: 2000, duration: '20s' }, { target: 1000, duration: '20s' }, ], gracefulRampDown: '30s', exec: 'feed', }, }, } export function feed() { let res = http.get('http://127.0.0.1:37000/douyin/feed?'); let jsonResponse = JSON.parse(res.body); check(jsonResponse, { 'status_code is 0': (json) => json.status_code === 0, }); sleep(3); } ```    最后修改:2023 年 09 月 02 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果你觉得文章帮到你了,请以沫喝杯奶茶吧~
1 条评论
emmm,从飞书直接截图了,主要原因是tmd飞书图片不能复制