【问题标题】:Presto cluster + how to tune the jvm.config according to memory resourcesPresto 集群 + 如何根据内存资源调优 jvm.config
【发布时间】:2019-12-15 22:12:21
【问题描述】:

我们使用 presto 集群作为分布式 SQL 查询

我们的集群规模

1 台机器作为协调机器

12 台 presto 工人机器

每台机器64G内存,每台机器只安装presto应用

关于workers上的jvm.config,长这样

-server
-Xmn10G
-Xmx50G
-XX:+UseG1GC
-XX:+ExplicitGCInvokesConcurrent
-XX:+CMSClassUnloadingEnabled
-XX:+AggressiveOpts
-XX:+HeapDumpOnOutOfMemoryError

还有presto coordinator上的jvm.config,像这样

-server
-Xmn4096M
-Xmx30G
-XX:ReservedCodeCacheSize=600M
-XX:MaxHeapFreeRatio=30
-XX:MinHeapFreeRatio=10
-XX:+UseG1GC

我们如上所述设置XmnXmx 值, 但这个设置只是估计

我们能否帮助我们根据 MA​​X 内存 - 64G 调整 Xmn 和 Xmx 因此 presto 集群性能将调整到最佳实践规模

【问题讨论】:

    标签: java linux performance presto


    【解决方案1】:

    通常,没有理由设置-Xmn(年轻代的大小),因为 JVM 会在运行时调整这个大小。或者,换句话说,你必须有充分的理由设置-Xmn

    -Xmx -- 你基本上是想告诉 JVM 它可以使用所有内存,但同时需要考虑 JVM 中的非堆内存(某些缓冲区、GC 数据结构等)和操作系统级服务占用的内存。在 Presto 的情况下,根据经验,您通常将 -Xmx 设置为可用内存的 80%,然后根据您对工作负载的监控进行调整。

    关于你设置的其他属性:

    • -XX:+CMSClassUnloadingEnabled 是多余的(不使用 CMS 垃圾收集器,G1 是,根据 -XX:+UseG1GC 标志)
    • -XX:+AggressiveOpts 不太可能是你想要设置的东西
    • -XX:MinHeapFreeRatio, -XX:MaxHeapFreeRatio -- 如果 Presto 是盒子上唯一的服务,你不想设置这些
    • 您缺少一些推荐的属性(我们推荐每个属性都是有原因的)。见https://trino.io/docs/current/installation/deployment.html#jvm-config

    【讨论】:

    • 谢谢你,关于你所说的,所以我只需要从文件中删除 -> -Xmn10G 行吗?或文件中的任何其他附加行 - jvm.config
    • 是的,从文件中删除 -Xmn... 行。关于其他属性——我也扩展了我的答案以涵盖它们。
    猜你喜欢
    • 2019-09-08
    • 2019-08-15
    • 2017-03-08
    • 2019-03-14
    • 2016-08-24
    • 2018-10-20
    • 2020-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多