gpt4 book ai didi

netty - 带或不带超线程的 webflux netty

转载 作者:行者123 更新时间:2023-12-04 08:00:08 26 4
gpt4 key购买 nike

我用响应式(Reactive) mongo 创建了简单的 Webflux (kotlin) 应用程序。 Controller 有一个 GET 方法,即返回 Flow(来自一个集合的 2 个对象)。
我使用了 Apache Benchmark,我注意到一件事:
我有 i7 10700(8+8 核)。如果我设置 System.setProperty("reactor.netty.ioWorkerCount", "8"),性能会提高。使用 16 个 netty-nio 线程,AB 显示每秒约 4800 个请求,一个请求时间大约需要 7-9 毫秒。使用 8 个 netty-nio 线程,AB 显示每秒约 5500 个请求和每个请求 3-5 毫秒。
future 在实际项目中仅使用物理内核是否值得?超线程在其他情况下有优势吗?

最佳答案

超线程和线程数是一件微妙的事情,在给定的设置中通常很难推理。因此,与其采取一揽子规则来打开或关闭它,总是值得对您的特定设置进行基准测试,看看哪种方式最有效,恕我直言。
话虽如此,在这种情况下,它阻碍而不是帮助性能,我并不过分惊讶。超线程不会为您的处理器提供更多真正的处理能力,它只会让内核中未使用的部分在另一个线程上同时使用。如果您的事件循环只是不停地做同样的工作,那么它可能不会产生很大的不同(因为每个线程都使用内核的相同部分) - 正如您所注意到的,有机会由于更多的工作线程会增加上下文切换开销,从而影响性能。
但是,如果您的应用程序可以对传入的每个请求执行有意义的不同工作 - 这可能是一个不同的故事,因此始终对您的特定案例进行基准测试以确保其意义。

关于netty - 带或不带超线程的 webflux netty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66512566/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com