V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
shanghai1943
V2EX  ›  问与答

请教如何进行压测

  •  
  •   shanghai1943 · 2022-04-20 16:00:28 +08:00 · 970 次点击
    这是一个创建于 731 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    6 条回复    2022-04-21 14:03:45 +08:00
    bingoup886
        1
    bingoup886  
       2022-04-20 22:24:24 +08:00 via iPhone   ❤️ 1
    分享下我搞的,不过存在你说的成本问题。
    1 Nginx 接收到流量后把请求包装,包括 param,body 等信息,发送 kafka 消息。
    2 消费者收到消息后插入 hive, 这个具体对待,es 啥的也可以。
    3 压测是根据接口配置查询 hive, 把要压测的请求 url 最后拼装成特定格式的 txt, 即流量录制。
    4 施压程序读取流量,重新请求。如果涉及但写场景,需要把 userId 做偏移,这点的前提是服务要能适配,做好基础数据或者反偏移。
    大概流程就这样,如果自己搞把上面这些流程系统化就行。
    shanghai1943
        2
    shanghai1943  
    OP
       2022-04-21 09:54:45 +08:00
    @bingoup886 #1 听起来像是在线上环境进行压测,然后通过 userId 的偏移来确保数据安全性是吧。偏移后的 userId 应该是能在业务数据库里找到真实数据的吧。
    bingoup886
        3
    bingoup886  
       2022-04-21 10:10:43 +08:00 via iPhone
    @shanghai1943 对,直接压线上,userId 可以插入正式表 or 插入影子表 or 程序支持反偏移
    shanghai1943
        4
    shanghai1943  
    OP
       2022-04-21 10:14:52 +08:00
    @bingoup886 #3 另外还想请教一下,就是压测的时候是所有请求类型都压测么,比如 POST DELETE 这些。这些压测的 userId 应该都是自己建立出来的数据吧,是不是还得往这些 userId 里插入足够多的数据,才能模拟出部分数据量大的真实用户的场景?谢谢。
    bingoup886
        5
    bingoup886  
       2022-04-21 13:56:54 +08:00
    @shanghai1943 你所说的就是写场景啊,要么使用模拟用户,要么录制真实用户请求后做偏移。模拟用户那就越多越好,如果是录制的话,把录制的周期拉长点就好了。把一天的流量用 5 分钟来回放,那 qps 应该会挺高了啊。
    shanghai1943
        6
    shanghai1943  
    OP
       2022-04-21 14:03:45 +08:00
    @bingoup886 #5 嗯嗯好的。谢谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2690 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 12:33 · PVG 20:33 · LAX 05:33 · JFK 08:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.