你们有人用上 WebFlux 了吗?为啥我测出来性能不是很理想 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhyzhy
V2EX    Java

你们有人用上 WebFlux 了吗?为啥我测出来性能不是很理想

  •  
  •   zhyzhy 2018-12-28 17:16:50 +08:00 6971 次点击
    这是一个创建于 2486 天前的主题,其中的信息可能已经有所发展或是发生改变。

    甚至感觉比原来差好多 代码在这儿

    代码 paste

    是我使用姿势不对吗

    网上搜了一些文章似乎也提到了

    Spring 5 WebFlux 性能试

    一次 webflux 与 webmvc 性能测试实践

    第 1 条附言    2018-12-29 10:48:09 +08:00
    自问自答一下
    性能方面官方也没有打包票说完爆 SpringMVC

    > Performance has many characteristics and meanings. Reactive and non-blocking generally do not make applications run faster. They can, in some cases, (for example, if using the WebClient to execute remote calls in parallel). On the whole, it requires more work to do things the non-blocking way and that can increase slightly the required processing time.

    > The key expected benefit of reactive and non-blocking is the ability to scale with a small, fixed number of threads and less memory. That makes applications more resilient under load, because they scale in a more predictable way. In order to observe those benefits, however, you need to have some latency (including a mix of slow and unpredictable network I/O). That is where the reactive stack begins to show its strengths, and the differences can be dramatic.
    12 条回复    2018-12-29 18:27:56 +08:00
    putaozhenhaochi
        1
    putaozhenhaochi  
       2018-12-28 17:36:35 +08:00
    同关注+1
    cyhulk
        2
    cyhulk  
       2018-12-28 18:06:23 +08:00
    来,我们可以一起骂骂 spring webflux,一个还不是很完整的生态,以及可读性和可理解性垃圾的 api,测试不好有测试不好的原因,为啥,因为你的 redis 请求都是 block 的,而且并不是 publishOnParallel 的,webflux 的 thread 可能只有你的核心数,你 webmvc,默认就 200 个,效果差肯定的
    Inside
        3
    Inside  
       2018-12-28 20:53:08 +08:00
    我的文件服务器用上了,性能不理想大概率是代码写的不对,在 event loop 线程里做 block 操作。
    在 IO bound 的场景,响应式性能好是可以预期的,比如 redis 这种单线程应用、比如 nginx 刚出世时让人惊讶的性能。
    zhyzhy
        4
    zhyzhy  
    OP
       2018-12-28 23:39:08 +08:00
    @cyhulk 我的 redis 用的官方推荐的 reactive 的呀,这么写有问题吗???要手动 publishOnParallel,我看官方例子中没有手动 publish。。。
    kkllxy
        5
    kkllxy  
       2018-12-29 08:00:02 +08:00
    关注+1
    godoway
        6
    godoway  
       2018-12-29 08:56:50 +08:00
    同关注,坐等 spring data r2dbc 成熟。
    sagaxu
        7
    sagaxu  
       2018-12-29 09:04:51 +08:00 via Android
    写一个这样的 http 接口,请求 /echo?q=foo,服务端过 20 秒钟返回 hello foo。传统阻塞型写法,1000 个 worker 线程最高能有 50rps。然后换 webflux 实现,可以轻松提高 100 倍性能。
    zhyzhy
        8
    zhyzhy  
    OP
       2018-12-29 09:26:03 +08:00
    @sagaxu 有完整的测过吗。。。求看一下代码。。。
    Tengdw
        9
    Tengdw  
       2018-12-29 09:31:39 +08:00
    WebFlux 可以提高应用吞吐量,吞吐量提高并不代表响应时间降低。这个问题小马哥有讲过
    cyhulk
        10
    cyhulk  
       2018-12-29 11:01:38 +08:00
    @zhyzhy sorry 没注意看代码,你确实写了两个,但是你写在的是同一个项目里面,你最好分开写,一个全部用 Webflux 的统一,也就是 reactor-netty,另个一个完全 servlet,如果两个写在一个里面,可能使用的是 serverletcontainer,这样导致只能部分用的 reactor。没看到全部代码无法判断。还有 spring 官方并没说可以完胜传统的 servlet,但是可以保证不会像 servelet 那样启动 N 多的 worker。
    luosuosile
        11
    luosuosile  
       2018-12-29 11:39:14 +08:00
    帮楼主顶一下,我也要开始玩 webflux
    sagaxu
        12
    sagaxu  
       2018-12-29 18:27:56 +08:00 via Android
    @zhyzhy 理解 webflux 运行机制的,不用测也能估算出来。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     865 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 21:25 PVG 05:25 LAX 14:25 JFK 17:25
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86