gpt4 book ai didi

caching - RavenDB:如何防止 RAM 利用率过高?

转载 作者:行者123 更新时间:2023-12-02 10:25:04 25 4
gpt4 key购买 nike

  • 我的应用程序包含一些返回大型结果集的查询(尽管我已使用 Take(300) lambda 对其进行了限制。
  • 在使用高峰时段,我发现 Raven.Server.exe 消耗了异常大量的 RAM。
    • 事实上,在这些时间里,Raven.Server.exe 可能会耗尽我服务器的可用 RAM。

如何避免这种情况?

  • 经过几次 Google 搜索后,我发现其他人在我之前也遇到过此错误。
  • 但是 RavenDB 在过去几年中不断发展,有许多配置和代码选项可以限制 Raven.Server.exe 可以消耗的 RAM 量并完全禁用缓存。

谁能告诉我哪些选项适合我的情况?

<小时/>

这是我找到的服务器配置选项:

这是我找到的代码选项:

<小时/>

我很清楚这个 default setting没有受到尊重:

Raven/MemoryCacheLimitMegabytes

The max size in MB for the internal document cache inside RavenDB server. Default: 50% of the total system memory minus the size of the Esent cache.

在我的服务器上,版本 2330,没有设置任何自定义配置,Raven.Server.exe 消耗了 95% 的可用 RAM!

<小时/>

编辑:执行大量读取(不执行写入)时,我能够在测试环境中重现此情况。

最佳答案

@Ayende Rahein关于 RavenDB 的了解比我多得多,但以下是对我有用的:

  1. Take(300)太多了。我需要将其更改为 Take(128) .
  2. 使用 3.10 GHz 四核客户端计算机,我在 Parallel.ForEach 内对 2.50 GHz 单核服务器进行查询。环形。我需要指定并行度:Parallel.ForEach(objects, new ParallelOptions { MaxDegreeOfParallelism = 3 }, currentObject => { /* My Query */ });
  3. 我需要configure the following options在我的DocumentStore上实例: _store.Conventions.DisableProfiling = true;
    _store.Conventions.ShouldCacheRequest = url => false;
    _store.DisableAggressiveCaching();
  4. 如果我需要对查询进行分页并在单个 session 中发出多个批量请求,我需要以下内容:
    ravenSession.Advanced.Evict(doc); // for each loaded doc

我希望这对其他人有帮助!

关于caching - RavenDB:如何防止 RAM 利用率过高?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15992053/

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