sdx-users
[Top][All Lists]
Advanced

[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





reply via email to

[Prev in Thread] Current Thread [Next in Thread]