2013-03-06 1 views
11

내 반지에 5 개의 노드가 SimpleTopologyStrategy이고 replication_factor=3입니다. 스트레스 도구를 사용하여 1M 행을 삽입했습니다.cqlsh에서 RPC 시간 초과 - Cassandra

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

사용 cqlsh의 행 수를 읽어하려고 할 때이 오류와 함께 실패합니다 : 그것은 한계 100000에 대한 인출

Request did not complete within rpc_timeout.

500000
내 모든 노드가에도 실패한다. rpc_timeout을 늘려야합니까?

도와주세요.

+0

, 나는 그것을 언급 가고픈 충동이 들게을 ** 쿼리 시간 제한을 증가 생산 클러스터에서 끔찍한 끔찍한 생각입니다. ** – Aaron

답변

6

1M 행으로 읽는 데 오랜 시간이 걸리므로 아마도 시간이 초과되었습니다. 이런 식으로 계산해서는 안되며, 모든 데이터를 읽어야하므로 매우 비쌉니다. 많은 품목을 계산해야하는 경우 카산드라 계수기를 사용하십시오.

또한 Cassandra 로그에서 다른 문제가 없는지 확인해야합니다. Cassandra의 예외로 인해 클라이언트에서 시간 초과가 발생할 수 있습니다.

11

요청이 서버 측에서 시간 초과되기 때문에이 오류가 발생합니다. Cassandra는 매우 비싼 작업이라는 것을 다른 사람들이 지적했듯이 알아야합니다.

그래도 실제로 이것을 수행하려면 /etc/cassandra/cassandra.yaml 파일을 업데이트하고 range_request_timeout_in_ms 매개 변수를 변경해야합니다. 이는 모든 범위 쿼리에 유효합니다. 당신은 아마뿐만 아니라 클라이언트 측에서 조정해야 할 것입니다

range_request_timeout_in_ms: 40000 

:

예는 40 초 시간 제한을 설정합니다. cqlsh을 클라이언트로 사용하는 경우, 이것은 cqlsh에 대한 구성 파일을 작성/갱신하여 ~/.cassandra/cqlshrc 아래에 넣고 client_timeout 매개 변수를 connection 섹션에 추가하십시오.

예는 40 초 시간 제한 설정 : 나는 그들이 수행 원하는 무언가로 저에게이 기사를 전달하는 사람과 함께 일하는 사람들이 있기 때문에

[connection] 
client_timeout=40 
관련 문제