Bonjour,
J'ai un problème dans le configuration de cluster au niveau de DataSource.
J'ai deux bases de données (MySQL) Replication Master Master.
Dans la configuration ci-dessous, sans cluster l'application fonctionne correctement.
Configuration de data-source:Une seule connexion est ouvert d'après la table PROCESSLIST de MySQL
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <bean id="mydataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/zaas?autoReconnect=true"/> <property name="username" value="root"/> <property name="password" value="root"/> <property name="validationQuery" value="Select 1"></property> </bean>
Les problèmes commencent lors de l'ajout de la configuration de cluster comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 mysql> show PROCESSLIST; +----+------+-----------------+------+---------+------+-------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+------+-----------------+------+---------+------+-------+------------------+ | 50 | root | localhost:51096 | zaas | Sleep | 2 | | NULL | | 51 | root | localhost | NULL | Query | 0 | NULL | show PROCESSLIST | +----+------+-----------------+------+---------+------+-------+------------------+ 2 rows in set (0.00 sec)
Le problème est que pour chaque requête, une connexion sera ouverte comme le montre la table PROCESSLIST :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <bean id="mydataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost,192.168.1.161:3306/zaas?autoCommit=true&autoReconnect=true&failOverReadOnly=false"/> <property name="username" value="root"/> <property name="password" value="root"/> <property name="validationQuery" value="Select 1"></property> </bean>Si le nombre de connexions dépasse les 100 connexions (la valeur par défaut de MySQL), nous avons un problème de "Too many connection"
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 mysql> show PROCESSLIST; +----+------+-----------------+------+---------+------+-------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+------+-----------------+------+---------+------+-------+------------------+ | 51 | root | localhost | NULL | Query | 0 | NULL | show PROCESSLIST | | 53 | root | localhost:35600 | zaas | Sleep | 94 | | NULL | | 54 | root | localhost:35609 | zaas | Sleep | 34 | | NULL | | 55 | root | localhost:60089 | zaas | Sleep | 5 | | NULL | | 56 | root | localhost:60093 | zaas | Sleep | 4 | | NULL | | 57 | root | localhost:60094 | zaas | Sleep | 4 | | NULL | | 58 | root | localhost:60095 | zaas | Sleep | 4 | | NULL | | 59 | root | localhost:60096 | zaas | Sleep | 3 | | NULL | | 60 | root | localhost:60097 | zaas | Sleep | 3 | | NULL | | 61 | root | localhost:60098 | zaas | Sleep | 3 | | NULL | | 62 | root | localhost:60099 | zaas | Sleep | 3 | | NULL | | 63 | root | localhost:60100 | zaas | Sleep | 2 | | NULL | | 64 | root | localhost:60101 | zaas | Sleep | 2 | | NULL | +----+------+-----------------+------+---------+------+-------+------------------+ 13 rows in set (0.00 sec)
Si nous nous arrêtons la bases de données localhost, le serveur utilise la deuxième base de données mais avec une seule connexion ouverte comme le montre la table PROCESSLIST :Avec une exception dans le log
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 mysql> show PROCESSLIST; +-----+------+------------------------------+------+---------+------+-------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +-----+------+------------------------------+------+---------+------+-------+------------------+ | 372 | root | wissem-desktop-2.local:47227 | zaas | Sleep | 36 | | NULL | | 374 | root | wissem-desktop-2.local:47299 | NULL | Query | 0 | NULL | show PROCESSLIST | +-----+------+------------------------------+------+---------+------+-------+------------------+ 2 rows in set (0.00 sec)
Est-ce la bonne façon de configurer un cluster ?
L'url de configuration de DataSource : http://dev.mysql.com/doc/refman/5.0/...roperties.html
J'ai essayé plusieurs configurations :
- JNDI
- la configuration c3p0 comme suit:
Quelqu'un saurait-il m'indiquer d'où peut venir le problème ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <bean id="mydataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="com.mysql.jdbc.Driver"/> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306,192.168.1.161:3306/zaas?autoCommit=true&autoReconnect=true&autoReconnectForPools=true&failOverReadOnly=false"/> <property name="user" value="root" /> <property name="password" value="root" /> <!-- these are C3P0 properties --> <!-- property name="acquireIncrement" value="${acquireIncrement}" /_--> <property name="minPoolSize" value="6" /> <property name="maxPoolSize" value="10" /> <property name="maxIdleTime" value="100" /> </bean>
Merci d'avance pour votre aide.







Répondre avec citation
Partager