2013-03-06 17 views
11

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 conteggio delle righe in cqlsh utilizzandoTimeout RPC in cqlsh - Cassandra

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

Viene a mancare con l'errore:

Request did not complete within rpc_timeout.

Si recupera per il limite di 100000 Fallisce anche per 500000.
Tutti i miei nodi sono in su. Devo aumentare lo rpc_timeout?

Per favore aiuto.

+0

Dato che ci sono persone con cui lavoro che stanno inoltro questo post a me come qualcosa che vogliono farsi, mi sento in dovere di dire che ** aumentare i timeout di query in un gruppo di produzione è un'idea terribile e terribile. ** – Aaron

risposta

6

La lettura delle righe 1M richiede molto tempo, quindi è probabilmente il motivo per cui è scaduto. 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.

È inoltre necessario controllare i registri di Cassandra per confermare che non vi siano altri problemi, a volte le eccezioni in Cassandra comportano il timeout sul client.

11

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 si desidera eseguire questa operazione, è necessario aggiornare il file /etc/cassandra/cassandra.yaml e modificare il parametro range_request_timeout_in_ms. 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 si dovrà regolare sul lato client. Quando si utilizza cqlsh come client, ciò si ottiene creando/aggiornando il file di configurazione per cqlsh con ~/.cassandra/cqlshrc e aggiungendo il parametro client_timeout alla sezione connection.

Esempio per impostare un timeout di 40 secondi:

[connection] 
client_timeout=40 
Problemi correlati