Vanilla에서 Discourse로 대규모 데이터 가져오기 (속도 저하)

Discourse에서 26GB의 데이터 덤프를 보유하고 있습니다.

  • 사용자 130만 명
  • 주제 300만 개
  • 게시글 2,100만 개

현재 문제는 분당 50만 건의 속도로 가져오고 있는데, 몇 분 후면 속도가 분당 2,000건까지 떨어지는 것입니다.

RAM이 많이 필요합니다. 벌크 임포터를 살펴보시는 것도 좋을 것 같지만, 바닐라용은 없는 것으로 알고 있습니다.

제이, 안녕하세요. AWS에서 c5.4xlarge 인스턴스를 사용 중인데, 처음에는 분당 500k까지 올라갔다가 몇 분 후부터 속도가 느려집니다.

가져오기 스크립트는 재시작할 수 있지만, 이는 불행히도 가져오기 스크립트의 일반적인 특성입니다.

응, 재시작하면 이미 가져온 데이터는 건너뛰지만, 같은 프로세스가 시간이 지남에 따라 점점 느려져요 :frowning:

확인해 주셔서 감사합니다. :frowning: 데이터가 계속 감소한다면 총 3,100만 건의 데이터를 처리하는 데 약 한 달 정도가 걸릴 것 같습니다. 이를 개선할 수 있는 방법이 있을까요? 아니면 원래 이런 것일까요?

클라우드 환경에서 찾기 어려운, 빠른 싱글 코어 속도를 갖춘 CPU가 필요합니다.

또는 벌크 가져오기 스크립트를 사용해 보세요. Importers for large forums

Vanilla용 스크립트도 있습니다: discourse/script/bulk_import/vanilla.rb at main · discourse/discourse · GitHub

AWS의 c5.4xlarge를 사용 중입니다.
vCPU - 16 메모리(GiB) - 32
이 사양으로 충분한지, 아니면 업그레이드해야 하는지 궁금합니다.

네, 일괄 가져오기 스크립트를 시도해 보겠습니다. 감사합니다!

일반적인 임포트 스크립트를 최대한 빠르게 실행하려면 PassMark CPU Benchmarks - Single Thread Performance 상위의 CPU가 필요합니다. AWS나 다른 클라우드 제공업체의 vCPU에서 어떤 성능을 낼지는 제가 알 수 없어요. :man_shrugging:

대량 가져오기를 사용하시려는 것 같습니다.

벌크 임포트를 시도할 때마다 항상 여기서 멈춥니다. 트레이스백이 카테고리 ID에서 멈추는 것을 보고 -1을 0으로 변경해 보았습니다.

@last_imported_category_id = imported_category_ids.max || -1
을
@last_imported_category_id = imported_category_ids.max || 0
으로 변경했죠.

ID가 -1인 카테고리를 삭제한 뒤 다시 시도해 보기도 했지만, 여전히 실패했습니다.

추가 인력을 고용할 수 있다면, https://www.literatecomputing.com/ 의 @pfaffman에게 연락하세요.