Come è il rilevamento dei nodi terminati in Erlang che lavora?Come è net_ticktime che influenza il controllo della livezze del nodo in Erlang?

StackOverflow https://stackoverflow.com//questions/24061270

Domanda

Imposta valore net_ticktime su 600 secondi.

net_kernel:set_net_ticktime(600)
.

In Erlang Documentazione per net_ticktime= Ticktime:

Specifica il tempo di tick net_kernel. Ticktime è dato in pochi secondi. Una volta ogni ticktime / 4 secondi, tutti i nodi collegati vengono spuntati (se qualsiasi altra cosa è stata scritta su un nodo) e se non è stato ricevuto nulla da un altro nodo negli ultimi quattro (4) volte il nodo è considerato il nodo. Ciò garantisce che i nodi che non rispondano, per motivi quali errori dell'hardware, siano considerati giù.

Il tempo T, in cui viene rilevato un nodo che non risponde:

MinT < T < MaxT where:

MinT = TickTime - TickTime / 4
MaxT = TickTime + TickTime / 4
.

Ticktime è predefinito 60 (secondi). Quindi, 45

.

Nota: normalmente, viene rilevato immediatamente un nodo di terminazione.

Il mio problema: Il mio Ticktime è 600 (secondi). Quindi, 450 (7,5 minuti)

Tuttavia si nota che normalmente viene rilevato un nodo terminante immediatamente ma non ho trovato la spiegazione (né nella documentazione Erlang, o Erlang eBook o altre fonti basate su Erlang) di questo principio di risposta immediato per la terminazione del nodo in Erlang distribuito. Sono i nodi in ambiente distribuito PINGED periodicamente con intervalli più piccoli rispetto a net_ticktime o il nodo terminante invia un tipo di messaggio ad altri nodi prima che termina? Se invia un messaggio ci sono scenari quando il nodo di terminazione non può inviare questo messaggio e deve essere Pinged per indagare sulla sua vivacità?

Inoltre è noto nella documentazione Erlang che distribuita Erlang non è molto scalabile per i cluster più grandi di 100 nodi poiché ogni nodo mantiene i collegamenti a tutti i nodi nel cluster. È l'algoritmo per indagare la vivacità dei nodi (Pinging, annunciando la terminazione) modificata con la dimensione crescente del cluster?

È stato utile?

Soluzione

Quando due nodi Erlang si connettono, viene effettuata una connessione TCP tra di loro.L'errore che si sta inducendo provocherebbe il sistema operativo sottostante chiudere la connessione, notificando efficacemente l'altro nodo molto rapidamente.

Il segno di spunta di rete viene utilizzato per rilevare una connessione a un nodo distante che sembra essere positivo, ma in realtà non passa il traffico, come potrebbe verificarsi quando un evento di rete isola un nodo.

Se si desidera simulare un errore che richiederebbe un segno di spunta per rilevare, utilizzare un firewall per bloccare il traffico sulla connessione creata quando i nodi prima ping.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top