As consultas parecem travar e, às vezes, não se comunicam com o cluster - Amazon Redshift

As consultas parecem travar e, às vezes, não se comunicam com o cluster

Exemplo do problema

Você está tendo um problema com a conclusão das consultas, onde as consultas parecem estar em execução mas travam na ferramenta do cliente SQL. Às vezes, as consultas não aparecem no cluster, como nas tabelas do sistema ou no console do Amazon Redshift.

Solução possível

Esse problema pode ocorrer devido à perda de pacotes. Nesse caso, há uma diferença no tamanho da unidade de transmissão máxima (MTU) no caminho da rede entre dois hosts de IP (Internet Protocol). O tamanho de MTU determina o tamanho máximo, em bytes, de um pacote que pode ser transferido em um quadro Ethernet através de uma conexão de rede. Na AWS, alguns tipos de instância do Amazon EC2 oferecem suporte a um MTU de 1500 (frames Ethernet v2) e outros tipos de instância oferecem suporte a um MTU de 9001 (frames jumbo TCP/IP).

Para evitar problemas que podem ocorrer com as diferenças de tamanho de MTU, recomendamos a execução de uma das ações a seguir:

  • Se o seu cluster usa a plataforma EC2-VPC, configure o grupo de segurança Amazon VPC com uma regra de entrada personalizada de protocolo de mensagem de controle da Internet (ICMP) que retorna Destination Unreachable. Assim, a mensagem instrui o host de origem a usar o menor tamanho de MTU no caminho de rede. Para obter mais detalhes sobre essa abordagem, consulte Configuração de grupos de segurança para permitir o "destino inacessível" do ICMP.

  • Se o cluster usa a plataforma EC2-Classic, ou se você não pode permitir a regra de entrada do ICMP, desabilite os quadros jumbo de TCP/IP para que os quadros de Ethernet v2 sejam usados. Para obter mais detalhes sobre essa abordagem, consulte Configuração da MTU de uma instância.

Configuração de grupos de segurança para permitir o "destino inacessível" do ICMP

Quando há alguma diferença no tamanho de MTU da rede entre dois hosts, em primeiro lugar certifique-se de que suas configurações de rede não estão obstruindo a descoberta de MTU do caminho (PMTUD). A PMTUD permite que o host de recepção responda ao host de origem com a seguinte mensagem de ICMP: Destination Unreachable: fragmentation needed and DF set (ICMP Type 3, Code 4). Essa mensagem instrui o host de origem a usar o menor tamanho de MTU no caminho de rede para enviar novamente a solicitação. Sem essa negociação, a perda de pacotes pode ocorrer porque a solicitação é muito grande para o host aceitar. Para obter mais informações sobre a mensagem do ICMP, acesse RFC792 no website Internet Engineering Task Force (IETF).

Se você não configurar explicitamente esta regra de entrada ICMP para seu grupo de segurança do Amazon VPC, PMTUD será bloqueado. Na AWS, grupos de segurança são firewalls virtuais que especificam regras para o tráfego de entrada e saída de uma instância. Para obter informações sobre o grupo de segurança de cluster do Amazon Redshift, consulte Grupos de segurança de clusters do Amazon Redshift. Para clusters que usam a plataforma EC2-VPC, o Amazon Redshift usa grupos de segurança da VPC para permitir ou negar o tráfego para o cluster. Por padrão, os grupos de segurança são bloqueados e negam todo o tráfego de entrada. Para obter informações sobre como definir regras de entrada e saída para instâncias EC2-Classic ou EC2-VPC, consulte Diferenças entre instâncias em EC2-Classic e VPC no Manual do usuário do Amazon EC2 para instâncias do Linux.

Para obter mais informações sobre como adicionar regras aos grupos de segurança da VPC, consulte Gerenciar grupos de segurança da VPC de um cluster. Para obter mais informações sobre configurações específicas de PMTUD exigidas nesta regra, consulte Descoberta do MTU de caminho no Manual do usuário do Amazon EC2 para instâncias do Linux.

Configuração da MTU de uma instância

Em alguns casos, o cluster pode usar a plataforma EC2-Classic ou você não pode permitir a regra ICMP personalizada para tráfego de entrada. Nesses casos, é recomendado que você ajuste o MTU para 1500 na interface de rede (NIC) das instâncias do EC2 a partir das quais você se conecta ao cluster do Amazon Redshift. Esse ajuste desabilita os quadros enormes de TCP/IP para garantir que as conexões usem consistentemente o mesmo tamanho de pacote. No entanto, essa opção reduz totalmente o throughput máximo da rede para a instância, não apenas para conexões com o Amazon Redshift. Para obter mais informações, consulte os procedimentos a seguir.

Para definir a MTU em um sistema operacional Microsoft Windows

Se o cliente é executado em um sistema operacional Microsoft Windows, você pode revisar e definir o valor da MTU para o adaptador de Ethernet usando o comando netsh.

  1. Execute o comando a seguir para determinar o valor atual da MTU:

    netsh interface ipv4 show subinterfaces
  2. Revise o valor MTU para o adaptador Ethernet na saída.

  3. Se o valor não for 1500, execute o seguinte comando para defini-lo:

    netsh interface ipv4 set subinterface "Ethernet" mtu=1500 store=persistent

    Após configurar esse valor, reinicie seu computador para que as alterações sejam implementadas.

Para definir a MTU em um sistema operacional Linux

Se o cliente é executado em um sistema operacional Linux, você pode revisar e definir o valor da MTU usando o comando ip.

  1. Execute o comando a seguir para determinar o valor atual da MTU:

    $ ip link show eth0
  2. Revise o valor da mtu na saída.

  3. Se o valor não for 1500, execute o seguinte comando para defini-lo:

    $ sudo ip link set dev eth0 mtu 1500
Para definir a MTU em um sistema operacional Mac
  • Siga as instruções no site de suporte do macOS sobre How to change the MTU for troubleshooting purposes. Para obter mais informações, pesquise o site de suporte.