首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >减少xodus垃圾收集器争用?

减少xodus垃圾收集器争用?
EN

Stack Overflow用户
提问于 2018-06-27 04:24:37
回答 1查看 141关注 0票数 1

有没有一种方法可以减少与xodus垃圾收集器之间的线程争用?

我一直在尝试建立一个实现,其中我使用多个环境来减少写争用,这在某种程度上是有效的-然而,当垃圾收集器运行时,它似乎仍然会阻止所有环境中的任何写线程……我可以观察到,每次垃圾收集器运行时,我的所有写线程都会被阻塞。

xodus中的垃圾收集器不是针对每个环境收集垃圾吗?

任何其他针对xodus的调优技巧都将不胜感激……我很难从中获得更多的写性能。唯一有帮助的环境配置变量是稍微增加日志文件的大小。大多数其他的事情,似乎没有任何影响。

我试过在关闭垃圾收集器的情况下运行,但随后文件计数很快就变得疯狂,这导致了其他问题。

EN

回答 1

Stack Overflow用户

发布于 2018-07-10 23:11:54

Xodus的GC在单个线程中的每个环境中运行,名称为"Exodus background cleaner“。每个GC周期只能针对单个环境执行,因此不同环境的垃圾收集是连续执行的。这就是为什么环境之间不应该有任何争用。此外,只读事务不会阻塞任何写事务,GC事务也不会阻塞。

一些可能影响GC计时的配置参数(请参阅EnvironmentConfig类):

  • 尝试使用小于默认值50的exodus.gc.minUtilization值。此配置参数设置数据库中“可用空间”的目标百分比。值越低,GC负载越少。
  • 尝试使用小于默认值1000的exodus.gc.transactionAcquireTimeout值。此配置参数设置GC尝试获取独占事务以回收数据的毫秒数。较低的值会降低峰值写入负载期间GC处于活动状态的概率。
  • 会尝试一个小于默认值exodus.gc.transactionTimeout的值。此配置参数设置GC在独占事务中回收数据的毫秒数(如果GC幸运地获得了数据)。
  • 最后,您可以尝试设置exodus.gc.useExclusiveTransaction=false,然后GC将始终尝试在乐观循环中回收数据,但我们的测试表明,乐观循环在高负载下几乎总是工作得更差。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51050872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档