【问题标题】:What should be the workerThread pool size for spring webflux applications?spring webflux 应用程序的 workerThread 池大小应该是多少?
【发布时间】:2021-09-28 17:17:18
【问题描述】:

我的要求是让其他 Java 应用程序在部署 spring webflux 应用程序的同一台服务器上运行。由于 spring webflux 默认使用与 CPU 内核一样多的工作线程,这些是否会导致其他 Java 应用程序的 CPU 争用问题?我应该减少工作线程的数量以提高所有应用程序的性能吗?

【问题讨论】:

    标签: java spring spring-webflux project-reactor reactor-netty


    【解决方案1】:

    在具有多个正在运行的应用程序的共享服务器上调整它有点适得其反,例如如果其中一个应用程序的 CPU 利用率出现峰值怎么办?在这种情况下,您必须选择:

    1. 在所有应用程序之间共享 CPU 内核。这可能会导致争用,但也会利用所有可用的 CPU 内核。

    2. 将 CPU 内核分配给特定应用程序并面临利用率不足的风险。这也是一个更复杂的设置,可能必须在操作系统级别完成,并且在 Windows 和 Linux 之间会有所不同。

    您选择哪条路线取决于您拥有的应用程序类型,例如您是否针对整个时间、延迟时间或最大 GC 暂停进行优化。这里没有一个适合所有答案的答案。

    【讨论】:

    • 感谢您的回答。我有一个疑问,如果我在 24 核服务器上将工作线程的数量减少到 4 个,它会在很大程度上减少争用问题。你也这么认为吗?
    • 仅当您确保将给定的 CPU 内核分配给您的应用程序时。通常,内核在系统中运行的所有进程之间共享,因此即使您减少到 4 个,这 4 个内核仍将在操作系统级别共享。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-19
    • 1970-01-01
    • 2017-03-22
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多