framework et technologies utilisés :
MYSQL 6 > Lucene > Hibernate > Spring > BlazeDS > Flex
Serveur Web : Apache Tomcat 6
Taille d'un enregistrement A : < 2ko
Schéma des données : A 1---* B
Tailles des index Lucene: 500 Mo
Nombre d'enregistrements dans la table cible: 1,2 Million
Problème:
Je suis en train de récupérer les enregistrements de la bases par dix. La navigation dans les résultats se fait avec un ToggleButtonBar. Au bout de quelques requête une première erreur se déclenche:
et l'application se plante, ensuite une deuxième erreur se déclenche:
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 [BlazeDS]Java heap space java.lang.OutOfMemoryError: Java heap space at com.mysql.jdbc.Buffer.getBytes(Buffer.java:198) at com.mysql.jdbc.Buffer.readLenByteArray(Buffer.java:318) at com.mysql.jdbc.MysqlIO.nextRow(MysqlIO.java:1375) at com.mysql.jdbc.MysqlIO.readSingleRowSet(MysqlIO.java:2369) at com.mysql.jdbc.MysqlIO.getResultSet(MysqlIO.java:451) at com.mysql.jdbc.MysqlIO.readResultsForQueryOrUpdate(MysqlIO.java:2076) at com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:1451) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1787) at com.mysql.jdbc.Connection.execSQL(Connection.java:3283) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1332) at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1467) at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:208) ....
J'ai fait analysé l'application avec la console d'administration de BlazeDS et voici ce que j'obtient:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 [BlazeDS]null java.lang.StackOverflowError at org.apache.log4j.Category.callAppenders(Category.java:215) at org.apache.log4j.Category.forcedLog(Category.java:391) at org.apache.log4j.Category.log(Category.java:856) at org.slf4j.impl.Log4jLoggerAdapter.debug(Log4jLoggerAdapter.java:173) at org.hibernate.jdbc.AbstractBatcher.logOpenPreparedStatement(AbstractBatcher.java:410) at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:160) at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1573) at org.hibernate.loader.Loader.doQuery(Loader.java:696) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259) at org.hibernate.loader.Loader.loadCollection(Loader.java:2015)
http://img268.imageshack.us/img268/9...oughoutput.png
ensuite
http://img3.imageshack.us/img3/4137/throughoutput2.png
les deux courbe décrivent l'AMFThroughoutput.
Sachant que si je fais les mm requêtes au dessous de BlazeDs en utilisant JUnit tests tout marche bien avec un temps de reponse de 0.26s !
Merci de bien vouloir m'indiquer par ou aller ^^' !
Partager