Erreur d'expiration de l'opération dans la console cqlsh de cassandra
J'ai un trois nœuds de Cluster Cassandra et j'ai créé une table qui dispose de plus de 2 000 000 de lignes.
Quand j'execute ce (select count(*) from userdetails
) requête en cqlsh, j'ai eu cette erreur:
OperationTimedOut: erreurs={}, last_host=192.168.1.2
Quand je lance le comte de fonction pour les moins de ligne ou avec limite de 50 000, il fonctionne très bien.
source d'informationauteur Kaushal | 2015-04-01
Vous devez vous connecter pour publier un commentaire.
count(*) en fait des pages à travers toutes les données. Ainsi, un
select count(*) from userdetails
sans limite se serait attendu à un timeout avec que de nombreuses lignes. Quelques détails ici:http://planetcassandra.org/blog/counting-key-in-cassandra/
Vous souhaitez peut-être envisager de maintenir le comte vous-même, à l'aide de l'Étincelle, ou si vous voulez juste une boule de parc numéro, vous pouvez le saisir à partir de JMX.
De saisir de JMX il peut être un peu délicat en fonction de votre modèle de données. Pour obtenir le nombre de partitions de saisir le
org.apache.cassandra.metrics:type=ColumnFamily,keyspace={{Keyspace}},scope={{Table}},name=EstimatedColumnCountHistogram
mbean et la somme de toutes les 90 valeurs (c'est ce quenodetool cfstats
sorties). Il ne fera que vous donner le nombre qui existent dans sstables afin de le rendre plus précis, vous pouvez faire une couleur ou d'essayer d'estimer le nombre de memtables de laMemtableColumnsCount
mbeanVous pouvez également augmenter délai d'attente dans l'cqlsh de commande, par exemple:
De modifier le client délai limite dans Apache Cassandra, il existe deux techniques:
Technique 1:Modifier le cqlshrc fichier.
Technique 2: Ouvrez le programme cqlsh et de modifier le délai spécifié à l'aide de la client_timeout variable.
Pour plus de détails à accomplir, veuillez consulter le lien: https://playwithcassandra.wordpress.com/2015/11/05/cqlsh-increase-timeout-limit/
si vous utilisez cqlsh: ouvrir le script dans l'éditeur et de trouver tous les mots "délai d'attente". Modifier la valeur par défaut de 10 à 60 et enregistrez le script.
Je suis à l'aide de Cassandra 3.4 et cqlsh pour obtenir le nombre d'enregistrements. Il semble qu'il y a eu un changement de code dans 3.4. cqlsh appelle simplement cqlsh.py. À l'intérieur de cqlsh.py il y a un
DEFAULT_REQUEST_TIMEOUT_SECONDS
variable dont la valeur par défaut de 10 (secondes). Je l'ai changé pour 3600 (1 heure) et maintenant monSELECT count(*)
des requêtes.avoir le même problème que vous au-dessus si je fais un compte pour un jour, mais pour que cela fonctionne, j'ai divisé le comte dans deux demandes (12 heures + 12 heures), comme ci-dessous.