Exceções do soquete MongoDB ao mover blocos

5

Eu tenho 2 shards no meu cluster mongodb db, com 1 servidor mongos. Eu tenho um total de 8 servidores, com um conjunto de réplicas com 5 e os outros 3. Eu tenho uma única coleção que é compartilhada através do cluster, mas recentemente, quando eu tentar um movimento de pedaço eu recebo exceções de soquete.

Todos os servidores estão sendo executados no EC2, com a maioria na mesma zona de disponibilidade. O servidor de envio e o servidor de recebimento estão em diferentes zonas de disponibilidade.

Aqui estão alguns trechos dos registros:

Servidor de envio:

Fri May 20 07:53:28 [conn6158] moveChunk data transfer progress: { active: false, ns: "social_advantage_analytics.edges", from: "slytherin/draco:27018", min: { _id: "100000007993210_116269473289" }, max: { _id: "100000012316922_167580256615048" }, state: "fail", errmsg: "socket exception", counts: { cloned: 0, clonedBytes: 0, catchup: 0, steady: 0 }, ok: 1.0 } my mem used: 0

Fri May 20 07:53:28 [conn6158] warning: moveChunk error transfering data caused migration abort: { active: false, ns: "social_advantage_analytics.edges", from: "slytherin/draco:27018", min: { _id: "100000007993210_116269473289" }, max: { _id: "100000012316922_167580256615048" }, state: "fail", errmsg: "socket exception", counts: { cloned: 0, clonedBytes: 0, catchup: 0, steady: 0 }, ok: 1.0 }

Recebendo servidor:

Fri May 20 14:51:10 [migrateThread] about to log metadata event: { _id: "george-2011-05-20T14:51:10-293", server: "george", clientAddr: "(NONE)", time: new Date(1305903070637), what: "moveChunk.to", ns: "social_advantage_analytics.edges", details: { min: { _id: "100000007993210_116269473289" }, max: { _id: "100000012316922_167580256615048" }, note: "aborted" } }

Fri May 20 14:51:10 [migrateThread] ERROR: migrate failed: socket exception

Servidor de fragmento:

Fri May 20 07:53:05 [Balancer] balacer move failed: { cause: { active: false, ns: "social_advantage_analytics.edges", from: "slytherin/draco:27018", min: { _id: "100000007993210_116269473289" }, max: { _id: "100000012316922_167580256615048" }, state: "fail", errmsg: "socket exception", counts: { cloned: 0, clonedBytes: 0, catchup: 0, steady: 0 }, ok: 1.0 }, errmsg: "data transfer error", ok: 0.0 } from: pansy to: percy chunk: { _id: "social_advantage_analytics.edges-id"100000007993210_116269473289"", lastmod: Timestamp 90000|354, ns: "social_advantage_analytics.edges", min: { _id: "100000007993210_116269473289" }, max: { _id: "100000012316922_167580256615048" }, shard: "pansy" }

    
por Bryan 20.05.2011 / 16:55

1 resposta

3

Esta é uma pergunta antiga, mas algumas coisas importantes para fornecer são:

  • Qual versão do MongoDB você está executando?
  • Cada servidor no cluster pode se comunicar com todos os outros servidores no cluster na porta atribuída (27018)? Isso inclui os shards do banco de dados e os mongos (balanceador).

  • Os fragmentos precisam conversar entre si para replicar os dados e, como os nós de envio e recebimento estão em zonas diferentes, eles estão no mesmo grupo de segurança? Existem firewalls locais que impedem a comunicação?

  • Considere inspecionar a quantidade de descritores de arquivos abertos para o processo mongod em cada servidor. Há um limite máximo de 20k imposto no código do servidor, mas normalmente há outro limite no lugar. Aqui estão alguns comandos para ajudar:

    lsof -p <pid of mongod> | wc -l
    
    su - mongod # or whatever user mongod is running as
    ulimit -n # => some systems default to 1024
    
por 22.04.2012 / 14:39

Tags