Le réglage et la mise à jour du pool de connexion (OracleConnectionPoolDataSource) propriétés pour de meilleures performances
Dans une application web Java, je suis en train de travailler sur, nous sommes à l'aide de OracleConnectionPoolDataSource pour une connexion à la base de la piscine de la fonctionnalité. Chaque appel getConnection comprend de l'utilisateur Oracle ID et le mot de passe. De sorte que chaque utilisateur, en un sens, se termine avec leur propre base de données du pool de connexions.
Actuellement, nous sommes en utilisant les valeurs par défaut pour la plupart des propriétés. Cela comprend
- MinLimit 0
- MaxLimit est un Entier.MAX_VALUE
- MaxStatementsLimit 0
- InactivityTimeout 0
- TimeToLiveTimeout 0
- AbandonedConnectionTimeout 0
- PropertyCheckInterval 900
- ConnectionWaitTimeout 0
Plus d'informations sur ces propriétés peuvent être trouvés à Connexion Des Propriétés De Cache.
Nous n'avons aucun flagrante de la base de données des problèmes de connexion, mais pense que le rendement pourrait être mieux. Ma question est: quelqu'un avez des conseils ou une bonne ressource sur ce que nous devrions considérer lors de l'ajustement de ces valeurs.
OriginalL'auteur prof401 | 2009-09-23
Vous devez vous connecter pour publier un commentaire.
Le Oracle Application Server Guide des Performances pour 10g Release 3 (10.1.3.1) fournit des renseignements définitifs sur comment optimiser les paramètres de pool de connexion.
L'information est utile pour presque tous les scénarios impliquant une application à l'aide d'un pool de connexion pour la gestion des connexions à une base de données Oracle, de ne pas supporter le serveur d'application en cours d'utilisation.
Par exemple, il est toujours une bonne pratique de définir une valeur pour le minimum de la taille du pool. Autant que la taille maximale du pool est concerné, la valeur ne doit pas être ouvertement élevé car cela pourrait en charge de l'auditeur, surtout si l'application a tendance à ne pas fermer les connexions entraînant une fuite.
Il est préférable de définir une valeur raisonnable pour le cache d'instruction, car cela permet des déclarations préparées à être mis en cache, ce qui permet d'améliorer les performances.
Délais d'attente devrait également être choisi avec l'environnement à l'esprit. Par exemple, la connexion, le délai d'attente ne devrait pas être de zéro dans la plupart des cas, car ceci pourrait causer SQLExceptions lorsque les connexions physiques ne peuvent pas être initialisées dans la piscine à l'intérieur d'un intervalle suffisant. Le délai d'inactivité doit être assez grand afin que les connexions devront être supprimés qu'après une durée d'inactivité; une valeur trop basse entraînerait des connexions physiques en cours de création et perdait beaucoup trop souvent.
EDIT: Les conseils donnés dans le Guide des Performances s'applique à l'oracle.jdbc.piscine.OracleDataSource classe, qui est ce que le Serveur d'Applications Oracle 10g utilise à la gestion des sources de données pour une base de données Oracle. Plus de il sera certainement à l'OracleConnectionPoolDataSource.
OriginalL'auteur Vineet Reynolds
Avez-vous envisagé d'utiliser les nouvelles Oracle UCP? Citation de la 11g liste des fonctionnalités (l'emphase est mienne):
Vous devriez considérer. IIRC la mise en commun de la fonctionnalité de la source de données Oracle a été dépréciée en faveur de l'utilisation de l'UCP.
OriginalL'auteur yawn
Mon premier conseil: Profil.
Mon deuxième conseil: Profil.
Qu'est-ce que le ralentissement de votre application vers le bas, ce qui les appels de méthode sont à l'origine des performances de votre application à souffrir?
Êtes-vous constamment en attente sur la création de nouvelles connexions? Ensuite, réglez votre MinLimit supérieur à 0, même avec les initiales de la limite", de sorte que vous avez un peu de disponible pour commencer. Si vous voulez que votre MaxLimit à l'infini, mis à '0', une valeur de 0 indique aucune limite.
Êtes-vous créer de nouvelles connexions quand vraiment, vous devriez utiliser un existant, mais en connexion inactive? Définissez votre InactivityTimeout à quelque chose en dehors de 0. En va de même pour AbandonedConnectionTimeout.
Note, la première chose que je tiens à bricoler avec les initiales de la limite'-
À partir d'Oracle au sujet initial-limite
OriginalL'auteur Tom Neyland