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

Tests et Performance Java Discussion :

Test de charge JMeter produit des exceptions de timout et objet connexion non disponible dans la pool


Sujet :

Tests et Performance Java

  1. #1
    Membre �clair� Avatar de kodo
    Profil pro
    Chef de projet technique
    Inscrit en
    Mars 2006
    Messages
    300
    D�tails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activit� : Chef de projet technique

    Informations forums :
    Inscription : Mars 2006
    Messages : 300
    Par d�faut Test de charge JMeter produit des exceptions de timout et objet connexion non disponible dans la pool
    Bonjour,
    J'ai web service qui appelle une proc�dure stock�e pour �crire dans une base de donn�es oracle.
    Je travaille avec Spring, Apache cxf, pour l'acc�s base de donn�es, je'utilise l'api jdbc (pas de hibernate)
    Pour des besoins de performances, j'ai configur� une pool de connexion avec l'api dbcp d'apache.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    url.datasource=jdbc:oracle:thin:@********:1521:odb
    username.datasource=user
    password.datasource=password
    pool.init.size=10
    pool.max.active=30
    pool.maxWaitMillis=30000
    spring.xml :
    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
    	<context:component-scan base-package="com">
    		<context:include-filter type="aspectj" expression="com.service.TracabiliteService"/>
    	</context:component-scan>
     
    	<context:property-placeholder location="classpath:db.properties"/>
     
    	<!-- DAO -->
    	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    		<property name="driverClassName" value="oracle.jdbc.OracleDriver" />
    		<property name="url" value="${url.datasource}" />
    		<property name="username" value="${username.datasource}" />
    		<property name="password" value="${password.datasource}" />
        	<property name="initialSize" value="${pool.init.size}"/>
        	<property name="maxActive" value="${pool.max.active}"/>
        	<property name="accessToUnderlyingConnectionAllowed" value="true"/>
        	<property name="maxWait" value="${pool.maxWaitMillis}"/>
    	</bean>
     
    	<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    		<property name="dataSource" ref="dataSource"></property>
    	</bean>
     
    	<bean id="appInitService" class="com.service.WSGlobalInitializer" init-method="init"></bean>
     
    	<!-- AOP -->
    	<aop:aspectj-autoproxy/>
    Le code appel� par le web service :
    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
    ...
    		Connection conn = jdbcTemplate.getDataSource().getConnection();
    		try {
    			Connection dconn = ((DelegatingConnection)conn).getDelegate();
    			OracleConnection oconn = dconn.unwrap(OracleConnection.class);
    			SimpleJdbcCall sjc = new SimpleJdbcCall(jdbcTemplate).withCatalogName(CATALOGUE)
    					.withProcedureName("myProc")
    					.declareParameters(new SqlParameter("p_1", OracleTypes.VARCHAR),
    							new SqlParameter("p_2", OracleTypes.VARCHAR),
    							new SqlParameter("p_liste", OracleTypes.ARRAY, "col"));
    			StructDescriptor descType = StructDescriptor.createDescriptor("type", oconn);
    			Object[] structListe = prepareTabObjets(objs, descType,	oconn);
     
    			ArrayDescriptor descCol = ArrayDescriptor.createDescriptor("col", oconn);
    			ARRAY t1 = new ARRAY(descCol, oconn, structListe);
    			Map<String, Object> mapParams = new HashMap<String, Object>();
    			mapParams.put("p_1", v1);
    			mapParams.put("p_2", v2);
    			mapParams.put("p_liste", t1);
    			Map<String, Object> mapResult = sjc.execute(mapParams);
    			...
    		} catch (Exception e) {
    			logger.error("Erreur", e);
    		}finally {
    			conn.close();
    		}
    		...
    Mon web service marche tr�s bien. Mais le test de charge avec Jmeter pour un sc�nario de 50 threads, 1s pour la mont�e en charge, et 1 pour it�ration g�n�re des refus.
    En v�rifiant, je n'ai que 10 r�ponses. les logs montrent des exceptions de non disponibilit� de connexion (saturation de pool de connexion).

    1er question : est ce que mon sc�nario de test est bon, ou il est irr�el (50 threads en 1 seconde) ?
    2eme question : qu'est ce que je peux faire pour ce probl�me de saturation de pool de connexion ?

    Merci de votre retour

  2. #2
    Membre �clair� Avatar de kodo
    Profil pro
    Chef de projet technique
    Inscrit en
    Mars 2006
    Messages
    300
    D�tails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activit� : Chef de projet technique

    Informations forums :
    Inscription : Mars 2006
    Messages : 300
    Par d�faut
    En consultant des testeurs qu'ont d�j� travail� sur le testing des web service avec Jmeter, me disent que mon sc�nario, n'est pas possible, et ir��l, et qu il faut avoir pour 50 thread un minimum de 100 s de remont� (Mon sc�nari, j'ai mis 1 seconde).

Discussions similaires

  1. Cr�er des plans de tests de charge r�alistes
    Par ra77 dans le forum Tests et Performance
    R�ponses: 2
    Dernier message: 07/03/2011, 11h16
  2. [JMeter] jmeter + cookies + test de charge
    Par zorro13 dans le forum Tests et Performance
    R�ponses: 0
    Dernier message: 18/12/2008, 10h19
  3. appeler des bd en vb avec objet connexion
    Par ilham88 dans le forum VB.NET
    R�ponses: 3
    Dernier message: 18/12/2008, 00h38

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