【问题标题】:Amazon Redshift: query execution hangsAmazon Redshift:查询执行挂起
【发布时间】:2015-06-02 17:32:17
【问题描述】:

我使用亚马逊红移,有时查询执行挂起而没有任何错误消息,例如 此查询将执行:

select extract(year from date), extract(week from date),count(*) from some_table  where date>'2015-01-01 00:00:00' and date<'2015-12-31 23:59:59' group by extract(year from date), extract(week from date)

这不是:

select extract(year from date), extract(week from date),count(*) from some_table  where date>'2014-01-01 00:00:00' and date<'2014-12-27 23:59:59' group by extract(year from date), extract(week from date)

但只有当我将项目部署到服务器并在我的本地计算机上执行所有查询时才会发生这种情况。

我已经在我的代码autoCommit=true 中设置了连接。 上面列出的所有事情我都使用这个库来处理 grails

        compile 'com.amazonaws:aws-java-sdk-redshift:1.9.39'

有什么想法吗?

【问题讨论】:

    标签: grails hadoop amazon-web-services amazon-redshift


    【解决方案1】:

    这可能不是一个确切的答案,但评论太长了。

    您可能需要检查执行执行的服务器上的mtu 设置。

    Redshift 希望对 1500 字节帧进行操作,所有 EC2 实例默认设置为巨型帧 (9000)

    为了让您顺利运行查询,您需要具有相同的mtu 设置。

    要检查您当前拥有的内容,请运行以下命令:

    ip addr show eth0

    示例输出如下所示:

    eth0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 9001 qdisc pfifo_fast state UP qlen 1000

    在本例中 mtu 为 9001,因此您需要通过运行将其更改为 1500:

    /sbin/ifconfig eth0 mtu 1500 up

    【讨论】:

    • 是的,在我的本地机器 mtu=1500 和 server=9001 上,您似乎是对的。
    【解决方案2】:

    我在从 EC2 实例连接到 RedShift 时遇到了这个问题。调整MTU没有帮助,所以我一直在挖掘,发现错误与TCP超时有关。

    在我用来连接 RedShift 的实例中执行以下操作解决了问题:

    # echo 60 > /proc/sys/net/ipv4/tcp_keepalive_time
    

    这会将 TCP keepalive 从 7200 秒(默认)更改为 60 秒。

    更多信息请见: http://docs.aws.amazon.com/redshift/latest/mgmt/connecting-firewall-guidance.html

    【讨论】:

      猜你喜欢
      • 2017-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-27
      • 1970-01-01
      • 2018-08-16
      • 1970-01-01
      相关资源
      最近更新 更多