负载过大的 Presto 节点



我正在presto上的tpch 100gb数据集上执行一些查询,我有4个节点,1个主节点,3个工作节点。当我尝试运行一些查询(不是全部(时,我在 Presto Web 界面上看到节点在执行过程中死亡,导致查询失败,错误如下:

.

facebook.presto.operator.PageTransportTimeoutException:与工作节点通信时遇到太多错误。节点可能已崩溃或负载过大。这可能是暂时性问题,因此请在几分钟后重试查询。

我重新启动了所有节点和presto服务,但错误仍然存在,如果我对较小的数据集运行相同的查询,则不存在此问题。有人可以就此问题提供一些帮助吗?

谢谢

这种错误的3个可能原因。您可以 ssh 到其中一个工作线程,以找出查询运行时的问题所在。

  • 高处理器

    task.concurrency调低至,例如,8

  • 高内存

    jvm.config中,-Xmx内存总量不应超过80%。在config.properties中,query.max-memory-per-node不应超过Xmx数的一半。

  • 打开文件限制低

    /etc/security/limits.conf中为 Presto 进程设置一个更大的数字。默认值肯定太低了。

这可能是配置问题。例如,如果未正确设置本地最大内存,并且查询使用过多的堆内存,则 full GC 可能会导致此类错误。我建议在Presto Google组中询问并描述某种方法来重现该问题:)

我在Mac上运行presto,内存为16GB 下面是java.config文件的配置。

-server
-Xmx16G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:OnOutOfMemoryError=kill -9 %p

即使运行查询,我也收到以下错误

选择现在((;

Query 20200817_134204_00005_ud7tk failed: Encountered too many errors talking to a worker node. The node may have crashed or be under too much load. This is probably a transient issue, so please retry your query in a few minutes.

我将 -Xmx16G 值更改为 -Xmx10G,它工作正常。

我使用以下链接在我的系统上安装 presto。

Presto 安装链接

相关内容

  • 没有找到相关文章

最新更新