>

단일 (상대적으로 130GB 정도) 컬렉션이 있고 3 개의 인덱스가있는 mongodb 데이터베이스가 있는데 프로파일 링을하고 싶습니다. 그러나 db.setProfilinStatus(1, 1000) 를 실행할 때  mongodb 명령은 다음 오류를 반환합니다.

{
    "was" : 0,
    "slowms" : 100,
    "errmsg" : "exception: too many namespaces/collections",
    "code" : 10081,
    "ok" : 0
}

nssize 설정을 확인했습니다 (mongod.conf에 nssize = 2047이 있고 db.adminCommand( "getCmdLineOpts" ) 의 결과를 확인했습니다

여기에 어떤 문제가 있는지, 어떻게 프로파일 링을 활성화 할 수 있는지 알고 있습니까? 감사합니다!

  • 답변 # 1

    이 nsSize 문서 (강조 표시)의 일부를 놓친 것 같습니다 :

    와이즈 비즈

    따라서 매개 변수를 변경하고 기존 데이터베이스의 콜렉션 수를 늘릴 수는 없습니다. 여전히 이전 값입니다. 설정은 실제로

    Use this setting to control size for newly created namespace files. This option has no impact on existing files

    의 크기를 변경합니다  파일이 생성 될 때 (기존 데이터베이스의 경우) 이미 존재하는 경우 파일을 다시 만들 때까지 원래 크기 (기본값 16MiB)로 유지됩니다.

    복제 세트를 실행하는 경우 재생을 발생시키는 가장 좋은 방법은 보조를 종료하고 새 nsSize 매개 변수로 다시 시작한 다음 데이터 파일을 지우고 동기화되도록하는 것입니다. 할퀴다. 새로운 <dbname>.ns 만들기가 포함되기 때문에  파일 설정을 선택하고 더 큰 설정을 만듭니다. 그런 다음 모든 보조 노드에 대해 반복하여 기본 노드를 종료하고 거기서 수행하십시오. 완료되면 모든 노드에서 설정이 완료됩니다.

    복제 세트가없는 경우 유일한 옵션은 다음과 같습니다.

    수리를 실행하면 가동 중지 시간이 발생하고 이전에는 16MB였던 2GiB 네임 스페이스 파일을 생성하므로 최소 2 배의 데이터 크기가 필요합니다.

    새로운 네임 스페이스 크기 조정을 활용하기 위해 모든 데이터를 새로 만든 데이터베이스에 복사

    이러한 옵션 중 어느 것도 특히 빠르지는 않으므로 독립 실행 형 인스턴스가 아닌 복제 세트 일 것입니다.

    데이터베이스에서 일부 콜렉션을 정리하여 헤드 룸과 정리할 시간을 확보 할 수도 있습니다. 실제로 24000 개의 컬렉션을 모두 사용하고 있습니까? 일부는 정리할 수 있습니까?

    .ns

  • 이전 postgresql - 단일 스크립트에서 서버 초기화, 시작 및 데이터베이스 생성
  • 다음 SQL Server 트랜잭션에서 테이블 및 업데이트 변경