请教如何进行压测

2022-04-20 16:00:28 +08:00
 shanghai1943

最近想针对服务端进行压测,有几个点想请教一下。

如何真实模拟线上环境?如果把线上数据整个拷贝过来的话,成本其实挺高的,比如硬件成本以及数据同步成本。假如不走数据拷贝的话,那该如何更真实的模拟用户环境呢?是否可以在测试环境等比例缩放线上环境的数据,同时相应减少机器的配置呢?但是性能问题似乎不是等比例的,而是指数级的,所以还是受困于如何模拟真实环境的问题。

不知道各位大哥都咋搞压测的。

1055 次点击
所在节点    问与答
6 条回复
bingoup886
2022-04-20 22:24:24 +08:00
分享下我搞的,不过存在你说的成本问题。
1 Nginx 接收到流量后把请求包装,包括 param,body 等信息,发送 kafka 消息。
2 消费者收到消息后插入 hive, 这个具体对待,es 啥的也可以。
3 压测是根据接口配置查询 hive, 把要压测的请求 url 最后拼装成特定格式的 txt, 即流量录制。
4 施压程序读取流量,重新请求。如果涉及但写场景,需要把 userId 做偏移,这点的前提是服务要能适配,做好基础数据或者反偏移。
大概流程就这样,如果自己搞把上面这些流程系统化就行。
shanghai1943
2022-04-21 09:54:45 +08:00
@bingoup886 #1 听起来像是在线上环境进行压测,然后通过 userId 的偏移来确保数据安全性是吧。偏移后的 userId 应该是能在业务数据库里找到真实数据的吧。
bingoup886
2022-04-21 10:10:43 +08:00
@shanghai1943 对,直接压线上,userId 可以插入正式表 or 插入影子表 or 程序支持反偏移
shanghai1943
2022-04-21 10:14:52 +08:00
@bingoup886 #3 另外还想请教一下,就是压测的时候是所有请求类型都压测么,比如 POST DELETE 这些。这些压测的 userId 应该都是自己建立出来的数据吧,是不是还得往这些 userId 里插入足够多的数据,才能模拟出部分数据量大的真实用户的场景?谢谢。
bingoup886
2022-04-21 13:56:54 +08:00
@shanghai1943 你所说的就是写场景啊,要么使用模拟用户,要么录制真实用户请求后做偏移。模拟用户那就越多越好,如果是录制的话,把录制的周期拉长点就好了。把一天的流量用 5 分钟来回放,那 qps 应该会挺高了啊。
shanghai1943
2022-04-21 14:03:45 +08:00
@bingoup886 #5 嗯嗯好的。谢谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/848167

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX