나는 MongoDB에 연결하기 위해 Doctrine ODM을 사용하고있다. 나는 3 개의 노드 복제본 세트를 가지고있다 : 2 개의 fulls와 하나의 arbiter. 복제는 고 가용성을 전제로하므로 노드간에 읽기를 분산시키려는 것이 아닙니다. 내 응용 프로그램은 not master and slaveok=false
메시지를 자주 사용하여 MongoCursorException
을 로깅합니다. mongodb 로그에서 장애 조치 이벤트가 발생했고 주 서버가 변경되지 않았다는 어떠한 증거도 보이지 않습니다. 수정 : 페일 오버가 실제로 발생 했음, 그러나 not master and slaveok=false
의 예외가 자주 나타나며 새 기본 노드가 성공적으로 선출 된 후 6 시간 후에도 나타납니다.Doctrine ODM/MongoDB가 쿼리를 다시 시도하지 않습니까?
어떻게해야합니까? doctrine-mongodb의 버전은 (experimental?) retry functionality이 포함되어 있지만 사용을 설정하는 쉬운 방법은 없습니다.
중요한지 확실하지 않지만 Symfony2 (v2.0) 앱입니다.
https://groups.google.com/d/topic/mongodb-user/6p710Rdycpg/discussion 우리가 재시도 (강조 광산)가 필요합니다 것을 의미한다 :
응용 프로그램이 이 있기 때문에 다시 시도/재 연결을 작성해야합니다처럼 많이 올 수 과도 (네트워크) 오류의 수 정상 작업 중 롤링 업그레이드 프로세스.
Mongo PHP extension docs이를 설명하는 것 : 첫 번째 시도가 어떤 이유로 실패 할 경우
드라이버가 자동으로 "일반"쿼리 (안 명령) 몇 번을 다시 시도합니다. 이는 복제 세트 페일 오버 중에 예외를 거의 발생시키지 않지만 (일부는 여전히 처리해야하지만) 일시적인 네트워크 문제를 해결합니다.
doctrine-mongodb
나는 실제로 mongod와 대화하기 위해 PHP 확장을 사용했다고 생각했습니다. 그래서 나는 이든이든 재시도 구성에 대해 걱정해야하는지 여부에 조금 혼란스러워합니다.
문제의 일부를 해결했다고 생각합니다. 을 this advice from Kristina Chodorow 다음 연결 문자열에서 제거했습니다. 더 이상 MongoCursorException
이 표시되지 않으며 메시지는 not master and slaveok=false
입니다. 나는 https://jira.mongodb.org/browse/PHP-392을 치고 있을지도 모른다.
그러나 페일 오버 중에 couldn't determine master
메시지와 함께 여전히 약간의 MongoCursorException
이 발생합니다. 예를 들어, 나는 장애 복구를 수행했다. mongod 로그를 기반으로 몇 초 후에 새로운 기본 서버가 선출되었지만 웹 응용 프로그램은 5 분 후에도 해당 예외를 throw합니다.
고맙습니다. 문서에서 권장하는 버전으로 번들을 업그레이드했습니다. 새 설정을 테스트하려면 내 dev 환경에서 복제본 세트를 설정하고 장애 조치 (failover)를 시뮬레이트해야합니다. 내일은 그렇게 할 것입니다. 두 가지 질문. 1)'retry_query'와'retry_connect' 둘 다에 1을 사용할 것을 권장합니까? 2) 새로운 번들과 함께, 매핑 된 PHP 객체에서 필드에 접근 할 때 BSON 문서 ('_id : "141"')의 문자열 id가 정수가되는 문제가 발생했습니다. PHP와 같은 특별한 문자열을 사용해야하므로 익숙하지 않은가? –
Jon Wage에게 OpenSky에서 재시도 옵션을 사용하는 것에 대해 물어 보는 것이 좋습니다. 옳은 대답은 유스 케이스에 따라 다를 수 있습니다. 재시도 시도로 요청을 지연시키는 것과 단순히 오류를 포착하고 거기에서 계속 이동하는 것의 절충이 있기 때문에 적절합니다. 귀하의 두 번째 질문에 대해서는 실패한 테스트 케이스와 함께 [pull request] (https://github.com/doctrine/mongodb-odm/pull/444)를 열었습니다. 테스트에서 귀하의 상황을 설명해 주시면 알려주십시오. – jmikola
좋아, 재시도 옵션에 대해 Jon에게 묻습니다. 그렇습니다, 그 당기는 요구는 머리에 못을 명중한다. –