2015-01-04 7 views
2

와 함께 실패합니다. WHERE 절은 약 200 만 개의 열이있는 파티션 키로 필터링됩니다. 나는 대략의 계산 결과를 얻을 것으로 예상한다. 나는 그것이 잘 데이터를 반환하는 열을 얻을 수있는 쿼리를 실행하면카산드라의 cqlsh 쿼리는이 같은 쿼리를 실행하기 위해 노력 해왔다 오류없이

errors={}, last_host=[THE_IP_OF_MY_SERVER] 

하지만 카운트를 반환 할 수 없습니다 : 2 백만는, 대신에 나는이 오류가 발생합니다. (예를 들어 here에 대해 논의 된 것들과 같은) 카운트 쿼리가 가질 수있는 성능 문제는 이해하지만 테스트를 위해이 쿼리에 대한 결과를 얻고 싶습니다.

그래서 제 질문은 :

  1. 이 시간 초과 오류인가? 그렇다면 어떻게 타임 아웃 기간을 늘릴 수 있습니까?
  2. 그렇지 않은 경우 왜이 오류가 발생합니까? 이에 대한 자세한 정보를 얻을 수있는 방법이 있습니까? 클러스터의 각 노드에서 system.log를 확인했지만 쿼리 중에 아무 것도 인쇄되지 않았습니다.

우분투 14.04를 실행하는 두 노드의 클러스터에서 cqlsh 5.0.1 및 스펙 3.2와 함께 Cassandra 2.1을 사용하고 있습니다.

감사합니다.

+2

문제를 해결할 수 있도록 'cqlsh'명령에서 [TRACING 명령] (http://www.datastax.com/documentation/cql/3.1/cql/cql_reference/tracing_r.html) 명령을 사용해보십시오. 두 경우 모두'select * ... '와'select count (*) ...'쿼리를 사용하여 동작을 볼 수 있습니다. – BrianC

답변

2

타임 아웃이어야합니다. 범위 쿼리를 사용하려는 경우 "read_request_timeout_in_ms"또는 "range_request_timeout_in_ms"(cassandra.yaml)의 값을 변경하여 요청에 필요한 최대 시간을 늘릴 수 있습니다. 값을 변경 한 후 클러스터를 다시 시작하십시오 (기본값은 10 초입니다).

파티션 키에 정확한 쿼리를 실행하면 카운트가 0 또는 1이됩니다. 따라서 하나 이상의 행을 반환하는 경우 쿼리는 클러스터링 열 (기본 키의 첫 번째 열 뒤에있는 열)에 있습니다.

+0

시간 초과 (x10)가 증가했지만 여전히 동일한 오류가 발생합니다. 시간 제한을 수정하기 전에 동일한 랩톱 (이전 버전, cqlsh 4.1.0, CQL 스펙 3.1.1)에서 cqlsh 클라이언트를 사용하여 동일한 쿼리를 실행했습니다. 이번에는 30 초 후에 응답을 받았습니다 (읽기 제한 시간은 5 초 였고 범위는 10 초였습니다)! 나는 대부분이 문제는 시간 초과와 관련이 있지만 cql4.1에서 시간 제한과 관련이 없으며 5.0.1에서 설정을 변경하고 서버를 재부팅 한 후에도 시간 초과가 발생한다는 것에 동의합니다. ? –

3

편집 ~/.cqlshrc 또는 ~/.cassandra/cqlshrc 함께 : 당신이 원하는대로

[connection] 
client_timeout = 20 

은 (초 단위) 시간 제한 수를 조정할.