[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [sdx-users] Utilisation SDX 2.2.1 et MySQL 4.1
From: |
Martin Sevigny |
Subject: |
Re: [sdx-users] Utilisation SDX 2.2.1 et MySQL 4.1 |
Date: |
Thu, 28 Jul 2005 11:18:00 +0200 |
User-agent: |
Mozilla Thunderbird 1.0.2 (Windows/20050317) |
Bonjour,
Sauf que lorsque je ré-indexe une base contenant déjà des documents ça
prend une éternité et plus souvent qu'autrement l'indexation semble ne
pas se compléter, la page de résultats d'indexation n'est jamais
retrounée (j'utilise wget avec un délai d'attente infini) et je n'ai
aucun moyen de connaître l'état exact de ma base. Alors, je vidais
d'abord la base avant d'indexer, mais là encore la suppression des
document prenait un temps fou à s'exécuter (quand ça se complètait).
Si la base est vidée, pourquoi faire une suppression?
La suggestion à l'époque qui m'avait été donné était d'utiliser autre
chose que HSQL pour le repos (et la database)... J'avais tenté de me
connecté sur Oracle (en développant mes propres classes),
SDX a déjà ce qu'il faut pour Oracle...
Inutile de vous dire que je commence en avoir assez :) Alors j'ai décidé
d'y aller avec MySQL, ce qui semble logique car je crois que c'est ce
que la majorité d'entre vous utilise? J'ai donc installé MySQL 4.1.12....
On l'utilise beaucoup de notre côté.
Premièrement, j'ai dû changé le driver utilisé "org.gjt.mm.mysql.Driver"
pour "com.mysql.jdbc.Driver" et ausi changé le jar pour la connexion
JDBC de "mm.mysql-2.0.11-bin.jar" pour
"mysql-connector-java-3.1.10-bin.jar". Autrement, SDX n'arrivais même
pas à se connecter sur MySQL... Est-ce que c'est quelque chose que
d'autres on dû faire? Ou je suis encore seul au monde?
Je ne sais pas si tu es seul, mais je n'ai pas souvenir d'avoir eu à
faire cela avec SDX/MySQL. J'ai MySQL 4.1.9 sur mon poste et j'ai aucun
problème.
A mon avis le changement de JAR est la raison de l'erreur qui suit...
La configuration que j'ai utilsé alors dans mon application.xconf
spécifiait que j'utilisais MySQL pour les repos de ma
sdx:userDocumentBase et ma sdx:documentBases avec des entrées dans le
genre: <sdx:repository id="users" type="MYSQL" dsi="sdxDb"/>. Aussi
comme recommandé (voir
http://lists.gnu.org/archive/html/sdx-users/2004-11/msg00002.html), j'ai
plaçé la ligne suivante dans la racine du fichier de config:
<sdx:database type="MYSQL" dsi="sdxDb"/>. J'ai immédiatement une erreur
lors du chargement de l'application:
http-8080-Processor22/SDXException: There was a problem deleting the
entity with the id, "admins", from the database with the id,
"sdxuserdatabase".
java.sql.SQLException: Can not issue data manipulation statements with
executeQuery().
(C'est la même exception et snas doute pour les mêmes causes que ce qui
avait été rapporté par Emmanuel Bégué dans
http://lists.gnu.org/archive/html/sdx-users/2005-05/msg00006.html)
J'ai corrigé SDX à ces endroits:
SDX 2.2.x:
- classe fr.gouv.culture.sdx.utils.database.AbstractJDBCDatabase, lignes
247 et 296: executeQuery => executeUpdate
SDX 2.3
- classe fr.gouv.culture.sdx.repository.JDBCRepository, ligne 770:
executeQuery => executeUpdate
- classe fr.gouv.culture.sdx.utils.database.HSQLRepository, ligne 207:
executeQuery => executeUpdate
Le problème ne devrait plus se poser.
J'ai donc plutôt placé deux <sdx:database type="MYSQL" dsi="sdxDb"/>. Un
dans sdx:userDocumentBase et l'un dans sdx:documentBases ... Voilà mes
tables sont crées... Mais si j'essaie de changer des infos sur mes
utilisateurs (mot de passe par exemple), je me retrouve avec la même
exception que ci-haut....
Normal.
Voilà maintenant je démarre mon application et lance l'indexation...
Mais après environ 17000 documents indexés, j'ai une erreur OutOfMemory!
Bon... J'ai refait plusieurs tests, avec MySQL installé sur un autre
serveur... Même résultats. La configuration mémoire de mon Tomcat
(5.0.28) est d'un minimum de 256Mb et un max de 512Mb... Est-ce quelque
chose dans la configuration de MySQL? Je n'en sais rien, j'en suis à ma
première expérience, peut-être quelqu'un à des suggestions en ce sens?
Plein de choses prennent de la mémoire. Peut-être qu'un entrepôt et un
"database" MySQL sont plus gourmands que l'équivalent en HSQL, je ne
sais pas. Peut-être qu'auparavant c'était limite...
Solution : augmenter la mémoire allouée?
Autre pas en arrière... J'enlève <sdx:database type="MYSQL"
dsi="sdxDb"/>... Donc j'efface tout, je reconfigure et maintenant la
seule table que j'ai dans MySQL c'est celle pour le repos. Je lance
l'indexation qui se déroule à merveille en moins d'une heure (50 min
environ).
Normal.
Mais voilà, je modifie quelques documents et j'en ajoutes quelques un,
je relance l'indexation... Résultats, 16 heures (!!!) plus tard, je
n'ai toujours pas de retour de la réponse. J'arrête tout et vérifie si
au moins quelques uns des documents ont été ajoutés ou modifié... Nada!
C'est comme si ça tournait à vide!
Donc le même problème.
Je reviens à la solution de vider d'abord la base, mais même chose... Au
bout de 2 heures ma base n'est toujours pas vide! Donc, je suis au même
point qu'avec HSQL! Je déduis donc que le gros du problème est lié à la
database (qui est toujours HSQL à cause du manque de mémoire que je
mentionnais plus haut) et non au repos.
Oui, mais ce n'est pas certain que la différence sera si importante.
Je refais donc un dernier test avec une base de documents plus petite (~
15000) afin de ne pas avoir le problème de manque de mémoire. Je mets
donc la database et le repos dans MySQL... La première indexation se
déroule à merveille! Je modifie certains document, j'en ajoute et je
lance la ré-indexation. Ça ne fonctionne pas, parce que pour mettre à
jour des documents, SDX les efface (c'est bien cela?) de la database et
là encore on a la fameuse exception:
Normal.
Voilà, je tourne un peu en rond! Si je pouvais au moins régler le
problème de mémoire au moins je pourrais refaire des tests en modifiant
la classe AbstractJDBCDatabase...
Alors si quelqu'un pouvait faire des suggestions/recommandation sur la
configuration d'un système (hardware et software) pour une utilisation
optimal de SDX, ce serait apprécié. En fait, je voudrais savoir pour
ceux qui n'ont pas ces problèmes:
En fait, as-tu essayé avec le dernier SDX de la branche 2.2.x, que tu
peux avoir en CVS? Le probème du delete n'y est plus, mais je ne suis
pas certain depuis quand.
- quel configuration système avez vous (hardware, système
d'exploitation, est-ce que vous avez des systèmes dédiés pour Tomcat/SDX
et un pour MySQL?)
Pas nous.
- quelle version de Tomcat et s'il y a des configurations particulières
qui permettraient d'amélioré le fonctionnement de SDX?
Donner de la mémoire, mais sinon rien.
- quelle version de MySQL et encore une fois, des recommandations sur
la configuration (je suis vraiment novice avec MySQL, alors toute
suggestion est la bienvenue)!
Rien de spécial!
A bientôt,
Martin Sévigny