autoConnectRetry signifie simplement le pilote tente automatiquement de se reconnecter au serveur(s) après l'inattendu se déconnecte. Dans les environnements de production que vous voulez généralement à cet ensemble pour de vrai.
-
connectionsPerHost sont la quantité de connexions physiques d'un seul Mongo exemple (c'est un singleton si vous avez généralement un par application) peut établir un mongod/mongos processus. Au moment de la rédaction du pilote java établira cette quantité de connexions finalement, même si la requête réelle débit est faible (en d'autres mots, vous verrez la "conn" statistique dans mongostat lever jusqu'à ce qu'il frappe ce nombre par serveur d'application).
Il n'est pas nécessaire de spécifier une valeur supérieure à 100 dans la plupart des cas, mais ce paramètre est l'un de ces "tester et de voir les choses. Notez que vous devrez assurez-vous de définir ce assez bas de sorte que le montant total de connexions à votre serveur de ne pas dépasser
db.serverStatus().connections.available
Dans la production, nous avons actuellement à 40.
connectTimeout. Comme son nom l'indique, en millisecondes, le chauffeur vous attendra devant une tentative de connexion est abandonnée. Vous définissez le délai à quelque chose de long (de 15 à 30 secondes) à moins qu'il y a un réaliste, prévu chance ce sera dans la façon de autrement couronnée de succès, les tentatives de connexion. Normalement, si une tentative de connexion prend plus que quelques secondes de votre infrastructure réseau n'est pas capable de haut débit.
maxWaitTime. Nombre de ms une fil d'attente pour une connexion à devenir disponible sur le pool de connexion, et lève une exception si cela ne se produit pas dans le temps. Garder par défaut.
socketTimeout. Standard socket valeur de délai d'expiration. 60 secondes (60000).
-
threadsAllowedToBlockForConnectionmultiplier. Multiplicateur pour connectionsPerHost qui indique le nombre de threads qui sont autorisés à attendre pour les connexions deviennent disponibles si la piscine est actuellement épuisé. C'est le paramètre qui sera la cause de la "com".mongodb.DBPortPool$SemaphoresOut: de sémaphores pour obtenir la connexion aux bases de" l'exception". Il permettra de lever cette exception une fois ce fil file d'attente dépasse la threadsAllowedToBlockForConnectionmultiplier valeur. Par exemple, si le connectionsPerHost est de 10 et que cette valeur est de 5 à 50 threads peuvent bloquer avant ladite exception est levée.
Si vous vous attendez à de grands pics de débit qui pourrait causer de grandes files d'attente temporairement augmenter cette valeur. Nous avons à 1500 pour le moment pour cette raison exactement. Si votre requête charge constante égale le serveur vous devez simplement améliorer votre matériel/mise à l'échelle de la situation en conséquence.
readPreference. (Mise à JOUR, 2.8+) Utilisé pour déterminer la préférence de lecture par défaut et remplace "slaveOk". Configurer un ReadPreference par le biais de l'un de la fabrique de classe de la méthode. Une description complète des paramètres les plus courants peuvent être trouvés à la fin de ce post
-
w. (Mise à JOUR, de 2,6+) Cette valeur détermine la "sécurité" de l'écriture. Lorsque cette valeur est -1 l'écriture ne va pas de signaler toute erreur indépendamment du réseau ou des erreurs de base de données. WriteConcern.AUCUNE n'est prédéfinie appropriée WriteConcern pour cela. Si w est 0 alors des erreurs de réseau fera l'échec de l'écriture, mais mongo erreurs ne sera pas. Il est généralement appelé comme "fire and forget", écrit et doit être utilisé lorsque la performance est plus important que la cohérence et la durabilité. Utilisation WriteConcern.NORMAL pour ce mode.
Si vous définissez w à 1 ou plus l'écriture est considérée comme sûre. Coffre-fort, écrit-effectuer l'écriture et de la faire suivre par une requête au serveur assurez-vous que l'écriture a réussi ou récupérer une valeur d'erreur si il n'en a pas (en d'autres termes, il envoie un getLastError() la commande après l'écriture). Notez que, jusqu'à cette getLastError() la commande est terminée, la connexion est réservée. Comme un résultat de qui et de la commande le débit sera nettement inférieur à l'écrit avec un " w " < = 0. Avec un w la valeur d'exactement 1 MongoDB garantit l'écriture a réussi (ou, de façon vérifiable, a échoué) sur l'instance que vous avez envoyé l'écriture.
Dans le cas de jeux de réplicas vous pouvez utiliser des valeurs plus élevées pour w qui dire MongoDB pour envoyer la écrire à, au moins, "w", les membres du jeu de réplicas, avant de revenir (ou, plus précisément, d'attendre la réplication de votre écriture pour "w" membres). Vous pouvez également définir w de la chaîne de la "majorité", qui raconte MongoDB pour effectuer l'écriture de la majorité des membres du jeu de réplicas (WriteConcern.La MAJORITÉ). Typicall vous devez mettre cette valeur à 1, sauf si vous avez besoin de performances brutes (-1 ou 0) ou répliqué écrit (>1). Des valeurs supérieures à 1 ont un impact considérable sur l'écriture de débit.
fsync. La durabilité de l'option que les forces de mongo pour vider le disque après chaque écriture lorsqu'elle est activée. Je n'ai jamais eu de problèmes de durabilité liés à une réduction de l'arriéré nous avons donc ce sur false (par défaut) dans la production.
j *(NOUVELLE à 2,7+)*. Booléen indiquant si la valeur est true, les forces MongoDB attendre à un succès de la journalisation du groupe de commettre l'avant de la retourner. Si vous avez la journalisation activée, vous pouvez activer cette pour plus de durabilité. Reportez-vous à http://www.mongodb.org/display/DOCS/Journaling pour voir ce que la journalisation, vous reçoit (et donc pourquoi vous souhaiterez peut-être activer ce flag).
ReadPreference.primaire() : Toutes les lectures aller à la repset principale uniquement. Utilisez cette option si vous avez besoin de toutes les requêtes de rendement conforme (le plus récemment écrite) de données. C'est la valeur par défaut.
ReadPreference.primaryPreferred() : Toutes les lectures aller à la repset membre principal, si possible, mais peut requête membres secondaires si le nœud principal n'est pas disponible. En tant que tel, si la principale devient indisponible lit devenir finalement cohérente, mais seulement si le primaire n'est pas disponible.
ReadPreference.le secondaire (de la) : Toutes les lectures aller à l'enseignement secondaire repset membres et le membre principal est utilisé pour les écritures. À n'utiliser que si vous pouvez vivre avec éventuellement lectures cohérentes. Supplémentaires repset membres peuvent être utilisées à l'échelle des performances de lecture bien qu'il existe des limites à la quantité de (droit de vote) les membres d'un repset peut avoir.
ReadPreference.secondaryPreferred() : Toutes les lectures aller à l'enseignement secondaire repset membres si l'un d'entre eux sont disponibles. Le membre principal est utilisé exclusivement pour l'écrit, à moins que tous les membres secondaires deviennent indisponibles. Autre que la reprise du membre principal pour lit c'est le même que ReadPreference.secondaire().
ReadPreference.le plus proche() : Lit aller à la plus proche repset membre à la disposition du client de base de données. À utiliser uniquement si finalement cohérente lit sont acceptables. Le plus proche est le membre membre avec la latence la plus faible entre le client et les différents repset membres. Depuis occupé membres finira par avoir des latences supérieures cela devrait également équilibrer automatiquement la charge en lecture, bien que dans mon expérience de l'enseignement secondaire(de préférence) semble faire mieux si les latences sont relativement homogènes.
Note : Tous les ci-dessus ont balise activée versions de la même méthode qui retourne TaggableReadPreference instances de la place. Une description complète de répliques de définir les balises peuvent être trouvés ici : Jeu de Réplicas Tags