Domanda Timeout RPC in cqlsh - Cassandra


Ho 5 nodi nel mio anello con SimpleTopologyStrategy e replication_factor=3. Ho inserito 1 milione di righe usando lo strumento stress. Quando sto cercando di leggere il numero di righe in cqlsh usando

SELECT  count(*) FROM  Keyspace1.Standard1 limit 1000000;

Fallisce con errore:

La richiesta non è stata completata entro rpc_timeout.

Si recupera per il limite 100000. Non riesce nemmeno per 500000.
Tutti i miei nodi sono attivi. Devo aumentare il rpc_timeout?

Per favore aiuto.


11
2018-03-06 04:25


origine


risposte:


Si ottiene questo errore perché la richiesta sta scadendo sul lato server. Uno dovrebbe sapere che questa è un'operazione molto costosa a Cassandra come altri hanno sottolineato.

Tuttavia, se vuoi davvero farlo devi aggiornare il tuo /etc/cassandra/cassandra.yaml file e cambia il range_request_timeout_in_ms parametro. Questo sarà valido per tutte le query della tua gamma.

Esempio per impostare un timeout di 40 secondi:

range_request_timeout_in_ms: 40000

Probabilmente dovrai adeguarti anche dal lato client. Quando si usa cqlsh come client ciò si ottiene creando / aggiornando il file di configurazione per cqlsh sotto ~/.cassandra/cqlshrc e aggiungi il client_timeout parametro al connection sezione.

Esempio per impostare un timeout di 40 secondi:

[connection]
client_timeout=40

11
2017-08-13 16:11



Ci vuole molto tempo per leggere in 1 milione di righe, quindi è probabilmente il motivo per cui sta scadendo. Non si dovrebbe usare un conteggio come questo, è molto costoso poiché deve leggere tutti i dati. Usa i segnalini Cassandra se devi contare un sacco di oggetti.

Dovresti anche controllare i tuoi registri di Cassandra per confermare che non ci siano altri problemi - a volte eccezioni in Cassandra portano a timeout sul client.


6
2018-03-06 08:08



Se riesci a vivere con un conteggio approssimativo di righe, dai un'occhiata a questa risposta a Conteggio delle righe di una famiglia di colonne in Cassandra.


2
2017-08-28 08:57