2017-10-25 36 views
1

한 Cloudant 인스턴스에서 다른 인스턴스로 데이터를 이동하는 중입니다. 데이터를 이동하는 좋은 방법은 연속 복제를 위해 복제 문서를 만들었습니다. 대부분은 (필자는 필터를 사용하지 않았으므로) 모든 문서를 복제하지만 일부는 여러 문서를 건너 뜁니다.클라우드 복제가 일부 문서를 건너 뜁니다.

문제가있는 2 개의 데이터베이스는 모두 새 문서 만 저장합니다 (업데이트가없고 삭제되지 않습니다). 더 큰 db (> 30 Mio docs)를 조사한 결과 특정 날짜 이후에 생성 된 문서 만 건너 뛴다는 것을 알게되었습니다. 이 날짜 이후 대부분의 날은 작성된 문서의 1/3을 놓친다. 가끔씩 복제 문서에서 오류가 발견되어 대개 신속하게 다시 사라지고 상태가 '트리거 됨'으로 다시 전환됩니다.

worker_died 오류 메시지는 {[{<<"error">>,<<"too_large">>}, {<<"reason">>,<<"the request entity is too large">>}]}으로보고됩니다. 원본 데이터베이스에 문제가 발생하지 않았습니다.

이 문제를 어떻게 해결할 수 있습니까?

답변

1

오래된 IBM Metadata Cloudant 계정에서 IBM Bluemix Public의 최신 인스턴스로 복제하는 것처럼 들립니다. 이전 인스턴스에서는 최대 요청 크기가 64M이지만 최신 인스턴스에서는이 제한이 1M으로 줄어 듭니다. 이 불일치는 문제 일 가능성이 큽니다.

복제하는 동안 소스에 기록 될 때 문서가 일괄 처리됩니다. 문서 자체가 1M보다 작 으면 일괄 요청 크기를 1M 요청 제한 크기로 축소하도록 조정할 수 있어야합니다. 배치 크기는 기본값 인 500이지만, worker_batch_size 매개 변수를 사용하여 변경할 수 있습니다. 문서의 일부가 1M이, 당신은 운이 걸 더 큰 경우

https://console.bluemix.net/docs/services/Cloudant/api/advanced_replication.html#performance-related-options

를 참조하십시오.

+0

답장을 보내 주셔서 감사합니다. 전용 Cloudant 인스턴스가 다른 배치 크기를 사용한다는 것을 알지 못했습니다. 나는'worker_batch_size = 1'로 또 다른 복제를 보았습니다. 아마도 며칠 동안 진행될 것입니다. 그러나 결과가 맞다면 그걸로 살 수 있습니다. –

+0

작동하는지 알려주세요 – xpqz

0

감사합니다. xpqz, 올바른 방향으로 나를 이끌고있었습니다. worker_batch_size 만 줄이면 1MB보다 큰 문서가 있으므로 문제가 해결되지 않았습니다. 1MB보다 큰 모든 문서를 건너 뛰는 필터를 추가하면 모든 작은 문서가 복제됩니다. 불행히도 Cloudant는 더 큰 문서를 건너 뛰고 이동하지 않지만 동일한 큰 문서를 반복하여 반복하여 다시 시도하기 때문에 나중에 모든 문서가 복제되지 않습니다.

  • 크기의 필터로 DD를 생성 :

    "필터"{ "doc_size"을 "기능 (문서, REQ)를 {\ r에 \ n 경우 (JSON.stringify (문서) .length> 1048575) {\ 연구 \ 없음 false를 반환; \ 연구 \ n을} \ 연구 \ n은 true를 반환; \ 연구 \ n을} "}

  • 은 복제 문서에 필터를 추가 :

    "필터 ""/doc_size ",

+0

다른 사람들에게 도움이되도록 답변을 수락 해주십시오. 감사! – xpqz