【问题标题】:best config for ehcache3 with springboot 2.5.4带有 spring boot 2.5.4 的 ehcache 3 的最佳配置
【发布时间】:2021-12-05 15:28:15
【问题描述】:

我打算将 Ehcache 与 Springboot 一起使用。我只是想知道在处理大量请求时最佳配置是什么。

在直播期间,我们每小时可能会收到超过 30000 个请求。虽然在开发中我们无法制作这种场景。

能否请您帮我计算内存以创建一个在 Prod 中完美运行的最佳配置。

我检查了 Postman 中的响应大小,在 Dev 中为 3-5 kb,所以我保留了以下配置,但不确定它会如何进行。我们的内存大小为 2GB(在产品中我们可以获得 4GB)。 ttl 设置为 1 小时。

<heap>5000</heap>
<offheap unit="MB">100</offheap>

您能否告诉我这是否适用于我提到的直播请求量?

【问题讨论】:

  • 您是否尝试过jmeter.apache.org 进行体积测试?
  • 这些工具在客户端系统中不可用,所以我不能使用它们
  • 也许您可以将您的问题重新表述为“如何确定最佳缓存大小”,这可能与其他人更相关。 Stackoverflow 并不是为了解决特定的设置问题。

标签: java spring-boot caching ehcache


【解决方案1】:

一般来说,“最佳”和“完美”的问题很难回答。

最佳缓存大小取决于:

  • 数据键空间
  • 其分布
  • 响应大小
  • 重新生成被驱逐数据的成本和时间
  • SLA,例如最长用户响应时间

您的 30000 req/hour 可能总是到同一个数据点,所以您的缓存只需要 5kb。

您配置多少堆和堆外缓存,还取决于内存和 CPU 成本以及响应时间之间的权衡。

即使您的开发机器速度不足以处理生产负载,您仍然可以使用与生产环境相同的访问序列对其进行测试。也许对于一小时的生产负载,您需要四个小时的开发时间来测试您的设置。

另一种可能性是减少用于在 dev 中测试的数据密钥空间。但是,重要的是您拥有类似的密钥分配。

一些实用的建议: 如果您基本上缓存的是 REST 响应(您提到了邮递员),那么在应用程序中缓存可能不是一个好的选择。也许在用户和应用程序之间使用基于 HTTP 的缓存

为了在生产环境中实现最佳缓存,您需要根据您在生产环境中看到的情况进行测试和调整。最好先在生产中使用更大的机器和更大的缓存大小,然后根据您的命中率、成本预期和服务水平降低容量。

【讨论】:

    猜你喜欢
    • 2017-02-22
    • 2017-01-16
    • 2018-07-14
    • 2016-03-14
    • 2019-10-03
    • 2019-03-24
    • 2022-11-17
    • 2015-06-04
    • 2019-02-04
    相关资源
    最近更新 更多