autoConnectRetry 는 예상치 못한 연결이 끊어진 후 드라이버가 자동으로 서버에 다시 연결을 시도 함을 의미합니다. 프로덕션 환경에서는 일반적으로이 설정을 true로 설정합니다.
connectionsPerHost 는 단일 Mongo 인스턴스 (싱글 톤이므로 일반적으로 애플리케이션 당 하나씩 있음)가 mongod / mongos 프로세스에 설정할 수있는 물리적 연결의 양입니다. 작성 시점에 Java 드라이버는 실제 쿼리 처리량이 낮더라도 결국이 연결 수를 설정합니다 (순서 말하자면 앱 서버 당이 수에 도달 할 때까지 mongostat에서 "conn"통계가 증가 함을 볼 수 있습니다).
대부분의 경우이 값을 100보다 높게 설정할 필요는 없지만이 설정은 "테스트 및 확인"항목 중 하나입니다. 서버에 대한 총 연결 수가 초과하지 않도록이 값을 충분히 낮게 설정해야합니다.
db.serverStatus().connections.available
프로덕션에서는 현재이 값이 40 개입니다.
connectTimeout . 이름에서 알 수 있듯이 연결 시도가 중단되기 전에 드라이버가 대기하는 시간 (밀리 초)입니다. 다른 방법으로 성공적인 연결 시도를 방해하는 현실적이고 예상되는 기회가없는 한 제한 시간을 길게 (15-30 초) 설정하십시오. 일반적으로 연결 시도가 몇 초 이상 걸리는 경우 네트워크 인프라는 높은 처리량을 제공 할 수 없습니다.
maxWaitTime . 스레드가 연결 풀에서 연결을 사용할 수있을 때까지 대기하는 시간 (밀리 초)이며, 이것이 제 시간에 발생하지 않으면 예외를 발생시킵니다. 기본값을 유지합니다.
socketTimeout . 표준 소켓 제한 시간 값. 60 초 (60000)로 설정합니다.
threadsAllowedToBlockForConnectionMultiplier . 풀이 현재 소진 된 경우 연결을 사용할 수있을 때까지 대기 할 수있는 스레드 수를 나타내는 connectionsPerHost의 승수입니다. 이것은 "com.mongodb.DBPortPool $ SemaphoresOut : db 연결을 얻기위한 세마포어 부족"예외를 유발하는 설정입니다. 이 스레드 큐가 threadsAllowedToBlockForConnectionMultiplier 값을 초과하면이 예외가 발생합니다. 예를 들어 connectionsPerHost가 10이고이 값이 5이면 앞서 언급 한 예외가 발생하기 전에 최대 50 개의 스레드를 차단할 수 있습니다.
대용량 대기열을 유발할 수있는 처리량의 최대치가 예상되는 경우이 값을 일시적으로 늘리십시오. 정확히 그 이유 때문에 현재 1500에 있습니다. 쿼리 부하가 지속적으로 서버를 초과하는 경우 그에 따라 하드웨어 / 확장 상황을 개선해야합니다.
readPreference . (업데이트, 2.8+) 기본 읽기 기본 설정을 결정하는 데 사용되며 "slaveOk"를 대체합니다. 클래스 팩토리 메소드 중 하나를 통해 ReadPreference를 설정하십시오. 가장 일반적인 설정에 대한 전체 설명은이 게시물의 끝에서 찾을 수 있습니다.
w . (업데이트 됨, 2.6+) 이 값은 쓰기의 "안전성"을 결정합니다. 이 값이 -1이면 쓰기는 네트워크 또는 데이터베이스 오류에 관계없이 오류를보고하지 않습니다. WriteConcern.NONE은 이에 대해 사전 정의 된 적절한 WriteConcern입니다. w가 0이면 네트워크 오류로 인해 쓰기가 실패하지만 mongo 오류는 그렇지 않습니다. 이는 일반적으로 "실행 후 삭제"쓰기라고하며 일관성과 내구성보다 성능이 더 중요한 경우에 사용해야합니다. 이 모드에는 WriteConcern.NORMAL을 사용하십시오.
w를 1 이상으로 설정하면 쓰기가 안전한 것으로 간주됩니다. 안전한 쓰기는 쓰기를 수행하고 서버에 대한 요청에 따라 쓰기가 성공했는지 확인하거나 실패한 경우 오류 값을 검색합니다 (즉, 쓰기 후에 getLastError () 명령을 보냅니다). 이 getLastError () 명령이 완료 될 때까지 연결이 예약됩니다. 그 결과 및 추가 명령의 결과로 처리량은 w <= 0 인 쓰기보다 현저히 낮습니다. aw 값이 정확히 1 인 MongoDB는 쓰기를 보낸 인스턴스에서 쓰기 성공 (또는 검증 가능)을 보장합니다.
복제본 세트의 경우 MongoDB에 반환하기 전에 복제본 세트의 최소 "w"구성원에게 쓰기를 보내도록 지시하는 데 더 높은 값을 사용할 수 있습니다 (또는 더 정확하게는 "w"구성원에 대한 쓰기 복제를 기다립니다. ). w를 "majority"문자열로 설정하여 MongoDB가 대부분의 복제본 세트 멤버 (WriteConcern.MAJORITY)에 쓰기를 수행하도록 지시 할 수도 있습니다. 일반적으로 원시 성능 (-1 또는 0) 또는 복제 된 쓰기 (> 1)가 필요하지 않은 경우이 값을 1로 설정해야합니다. 1보다 큰 값은 쓰기 처리량에 상당한 영향을 미칩니다.
fsync . 사용 가능한 경우 Mongo가 각 쓰기 후 디스크에 플러시하도록하는 내구성 옵션입니다. 쓰기 백 로그와 관련된 내구성 문제가 없었으므로 프로덕션에서 false (기본값)로 설정했습니다.
j * (새로운 2.7+) *. true로 설정되면 MongoDB가 반환하기 전에 성공적인 저널링 그룹 커밋을 기다리도록하는 부울입니다. 저널링을 활성화 한 경우 추가 내구성을 위해 활성화 할 수 있습니다. 를 참조하십시오 http://www.mongodb.org/display/DOCS/Journaling 저널링 당신을 얻는 것을보고 (그리고 왜이 플래그를 활성화 할 수 있음).
참고 : 위의 모든 항목에는 대신 TaggableReadPreference 인스턴스를 반환하는 동일한 메서드의 태그 사용 버전이 있습니다. 복제 세트 태그에 대한 전체 설명은 여기에서 찾을 수 있습니다. 복제 세트 태그