【问题标题】:Threading configuration for microservices written in java/jersey/grizzly用 java/jersey/grizzly 编写的微服务的线程配置
【发布时间】:2016-01-14 13:12:12
【问题描述】:

我正在设计一个基于微服务的系统。大多数服务都部署为带有嵌入式 Grizzly Web 服务器的独立 Jersey 进程。

假设其中许多服务将在同一台机器上执行,我是否应该更改 Grizzly 中的任何线程配置以防止机器范围内线程过多的情况?

Grizzly 的默认线程模型是什么?单个 Web 服务器可以创建的线程数是否有限制?

【问题讨论】:

  • Grizzly 文档对此有何评论?
  • 我找不到任何具体的答案,我找到的信息量最大的资源是grizzly.java.net/bestpractices.html
  • 第一个和最后一个案例不是明确针对您的问题吗?
  • 不,因为我问的是同一台机器上的多个进程。我应该限制它们中的每一个还是保持默认设置?
  • 哦,来吧。如果对单个 Grizzly 实例有建议的限制,那么显然它们会在 2 个实例时减半,4 个实例时减半,等等。资源量毕竟保持不变,除非你有一台神奇的计算机。

标签: java multithreading jersey grizzly microservices


【解决方案1】:

这取决于您如何处理传入的数据。

如果需要处理数据(cpu时间> io时间),那么需要物理核数与数据处理线程数相匹配。

如果大部分时间都花在 IO(检索/存储数据)上,那么您可以从 cores * 2 开始,并将最大值设置为您必须通过测试 cpu 使用率和吞吐量来确定的值。我个人喜欢每个核心 4 的力量(4、16、64、256)。这将很快将您缩小到数量级。

https://javaee.github.io/grizzly/coreconfig.html#/Thread_Pool_Configuration

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-14
    • 2013-12-24
    • 2013-12-28
    • 2010-11-29
    • 2013-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多