2011-05-04 3 views
0

복제 세트에 세 개의 서버가 있습니다. 예를 들어, ServerA는 Primary이고 ServerB와 ServerC는 Secondaries입니다. 환경을 스트레스 테스트하는 동안 ServerA의 서버로드는 약 4.00으로, 보조 서버는 0.00으로 유지됩니다. 스트레스 테스트의 URL 대상은 mongo에 대한 쓰기 작업을 수행하지 않지만 읽기 작업이 보조 노드에 배포되지 않는 것으로 보입니다.MongoDB가 복제 세트에 읽기를 배포하지 않습니다.

공식 C# 드라이버를 사용하고 있습니다.

ServerA 로그는 열리는 많은 연결, lsn 설정 항목 및 "killcursors"명령을 보여줍니다. 이는 분명히 페이지를 제공하기 위해 노력하고 있습니다. 그러나 ServerB와 ServerC는 웹 서버 (네 개)의 초기 연결 만 표시하고 그 후에는 "lsn set"항목 만 로그에 표시됩니다. 몇 분 후 초기 4 개의 연결 시간이 초과되었습니다.

복제 세트가 정상적으로 작동합니다. 나는 1 차에서 몽고를 멈출 수 있고, 2 차는 성공적으로 새로운 1 차를 선출 할 것이다. 의 Web.config에서

우리의 연결 문자열 : 우리가 무슨 일을하고

<connectionStrings> 
    <add name="wellness.mongodb" connectionString="mongodb://serverA:27017,serverB:27017,serverC:27017/mydatabase?safe=true;replicaset=myreplicaset;slaveok=true" /> 
</connectionStrings> 

?

+0

공식 C# 드라이버의 버전은 사용하고 계십니까? –

+0

slaveOK를 지정해야합니까? – murvinlai

답변

1

연결 문자열이 정상적으로 보입니다. 나는 시도하고 재생산하고 다시보고 할 것이다.

+1

github의 master 분기에서 최신 버전의 C# 드라이버를 사용하는 경우 모든 읽기가 동일한 서버로 보내지는 버그를 발견했습니다. 수정본이 github에 푸시되었습니다. v1.0 릴리스를 사용 중이라면 더 자세히 조사해야합니다. –

+0

우리는 v1.0 릴리스를 사용하고 있었지만 github에서 최신 버전을 사용해 보겠습니다. 나는 곧 당신과 함께 할 것입니다. –

+0

v1.0 드라이버로 테스트했을 때 보조 장치에서 정확하게 읽음을 볼 수있었습니다. github의 최신 드라이버 소스를 사용하여 버그 (현재 수정 됨)가있는 경우에만 해당됩니다. –

관련 문제