IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

[DBCP]jakarta commons DBCP: pb dépassement taille max active


Sujet :

JDBC Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 91
    Points : 90
    Points
    90
    Par défaut [DBCP]jakarta commons DBCP: pb dépassement taille max active
    Bonjour,

    bah voila tout est dans l'énoncer,

    J'ai mis pas mal de trace dans mon appli pour voir le nombre de connection active, le nombre de connection idle etc ...

    Je trouve mes résultats assez troublant, en effet j'ai configuré le pool pour avoir 50 conn max active ( je pensais qu'après il n'en donnait plus tant qu'une des 50 n'était pas libérée). Et la plus l'appli tourne plus le nombre de conn active augmente jusqu'a 680 / 50 (eh oui quand meme) et la mon tomcat tombe.

    Est ce que quelqu'un pourrait m'expliquer, peut-etre que je n'ai pas bien compris le fonctionnement du pool, ou que j'ai un problème de config ou autre ...

    Merci d'avance

    Loïc





    [Modéré par Didier]
    Ajout de tag dans le titre
    Lire les règles du forum : Règles du forum Java

  2. #2
    Expert éminent

    Avatar de christopheJ
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 600
    Points : 8 235
    Points
    8 235
    Par défaut
    Peux-tu donner la configuration de ton pool, et le code du programme qui teste?
    Il existe des options pour autoriser le pool à reprendre la connexion de force si le serveur ne l'utilise pas. Ca vient peut etre de ca.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 91
    Points : 90
    Points
    90
    Par défaut
    bon autant pou moi c pas commons DBCP c commons Pool

    voila ma config

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #-------------- Pool de connexions -------------------------
    # nb maxi de connections actives dans le pool (-1=illimite)
    connection.pool.max.active=50
    # temps attente (ms) maxi pour obtenir une connection avant de lancer une exception (-1=illimite)
    connection.pool.max.wait=10000
    # nb mini de connections inutilisees dans le pool (-1=illimite)
    connection.pool.min.idle=10
    # nb maxi de connections inutilisees dans le pool (-1=illimite)
    connection.pool.max.idle=20
    # temps entre deux nettoyages du pool (ms)
    connection.pool.time.betweenevictionruns.millis=60000
    # temps d'inutilisation minimum avant de nettoyer un objet (ms)
    connection.pool.min.evictable.idle.time.millis=600000
    pour les traces en fait j'ai une classe comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    public class ConnectionObjectPool extends GenericObjectPool {
    	private static Log log = LogFactory.getLog(ConnectionObjectPool.class);
     
    	public ConnectionObjectPool(PoolableObjectFactory pof) {
    		super(pof);
    	}
     
    	public void addObject() throws Exception {
    		super.addObject();
    		log.debug("Creation d'une connexion dans le pool >> " + getStateDescription());
    	}
    	public Object borrowObject() throws Exception {
    		Object obj = super.borrowObject();
    		log.debug("Sortie d'une connexion du pool >> " + getStateDescription());
    		return obj;
    	}
    	public void returnObject(Object obj) throws Exception {
    		super.returnObject(obj);
    		log.debug("Retour d'une connexion dans le pool >> " + getStateDescription());	
    	}
     
    	public void evict() throws Exception {
    		super.evict();
    		log.debug("Evict >> " + getStateDescription());	
    	}
     
    	private String getStateDescription() {
    		StringBuffer sb = new StringBuffer(" (Active=*/").append( 
    			String.valueOf(getNumActive())).append( 
    			"/").append(String.valueOf(getMaxActive())).append( 
    			" - Idle=").append(String.valueOf(getMinIdle())).append( 
    			"/").append(String.valueOf(getNumIdle())).append( 
    			"/").append(String.valueOf(getMaxIdle())).append(")");
    		return sb.toString();
    	}
     
     
    }

    voila, si vous avez d'autre question n'hésitez pas

    Merci

  4. #4
    Expert éminent

    Avatar de christopheJ
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 600
    Points : 8 235
    Points
    8 235
    Par défaut
    Si je comprends, tu es dans Tomcat et gères toi même le pool. Pourquoi ne pas laisser Tomcat gérer le pool?

  5. #5
    Membre expérimenté
    Avatar de RanDomX
    Profil pro
    sans
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Points : 1 407
    Points
    1 407
    Par défaut
    tu dois avoir des objets qui ne liberent pas les ressoources.

    Du coup, les connections ne sont pas releasé ds le pool, et le mécanisme de secours se met en place, a savoir qu'il créee des connections à la demande (puisqu'il n'y en a plus ds le pool).

    Liberes les objets qui se servent de tes connections, ou fait explicitement appel au release.

    @+

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 91
    Points : 90
    Points
    90
    Par défaut
    merci bcp jvé eplucher pon code pour voire si je libère bien les connections

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. commons-dbcp : ant 2 maven2
    Par allstar dans le forum Maven
    Réponses: 1
    Dernier message: 28/01/2009, 23h31
  2. Réponses: 4
    Dernier message: 30/07/2007, 14h06
  3. Réponses: 4
    Dernier message: 28/09/2006, 01h12
  4. Réponses: 3
    Dernier message: 11/08/2006, 15h00
  5. [connection pool]commons DBCP
    Par horalass dans le forum JDBC
    Réponses: 2
    Dernier message: 20/12/2005, 11h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo