2011-05-16 4 views
1

이 mongo 커서 시간 초과 예외가 있습니다. 사실, 나는 트위터와 페이스 북과 같은 사회적 사이트로부터 피드 애그리 게이터를 만들고있다. 나는 2 분마다 트윗을 가져 와서 내 로컬 DB에 트윗을 유지하기 위해 cron을 실행하고 있습니다. 피드를 파싱하고 필요한 정보를 추출하여 다른 데이터베이스에 보관하는 또 다른 스크립트가 있습니다. 문제는 파서가 계속 실행되고 피드를 파싱하는 것입니다. 그러나,이 커서 시간 초과 예외가 있습니다. 구문 분석을 위해 로컬 db에서 한 번에 50 개의 트윗을 가져 오려고합니다. 아직도 그것은 커서 예외를 던지고있다 나는 데이터베이스를 적절하게 색인화했다. 참고로 서버에는 8GB의 하드 디스크와 700MB의 RAM이 있습니다. 나는이 구성이 처음에는 충분해야한다고 생각한다. 현재 60000 개의 트윗이 내 데이터베이스에 저장되어 있으며 20000 개를 파싱해야합니다. 하지만 여전히 커서 타임 아웃 예외를 던지고있다.Mongo CursorTimeout 예외

제안 사항. 당신이 PHP 드라이버를 사용하는 경우

+1

코드는 어떤 언어입니까? 루비와 자바 드라이버에서는 커서 타임 아웃을 비활성화 할 수 있습니다 - 다른 사람도 그렇게 할 수있을 것이라고 확신합니다. 드라이버 설명서를 읽으십시오. – lobster1234

+0

답변을 제공 한 사용자에 대해이 질문과 다른 질문에 답하십시오. – Petrogad

답변

0

, 당신은

(-1 시간 제한이 없음)

MongoCursor::$timeout = -1; 모든 쿼리에 대한 시간 제한을 해제 할 수 있습니다 그리고 다른 드라이버가 쿼리에 대한 동일한 옵션을 가질 수있다 생각합니다. (설명서를 읽으십시오)

+0

완전히 시간 초과를 제거하는 것이 안전할까요? – Petrogad

+0

'전적으로'안전하다고는 확신 할 수 없지만, 6 개월에 걸쳐 노예 몽고에서이 옵션을 사용했으며 심각한 문제는 없었습니다. (가장 느린 쿼리는 약 30 분입니다.) – lqez