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

Exécution et industrialisation Discussion :

Java Heap Space error et optimisation


Sujet :

Exécution et industrialisation

  1. #1
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 16
    Points : 11
    Points
    11
    Par défaut Java Heap Space error et optimisation
    Bonjour,

    Je suis débutante sur Talend et je cherche à recréer un traitement existant sous ODI avec Talend. J'utilise TOS Version: 5.0.2 Build id: r78327-20120216-0244 et un Pc Windows xp pro sp3 3Go de Ram.

    J'essaye de réaliser le job (en fichier attaché) mais j'ai un problème de heap space. Les tables utilisées font 2 millions de lignes pour deux d'entre elles et 8 millions pour la dernière.

    J'ai déjà testé le stockage sur le disque et voici la backtrace du traitement avec –xms256M et –Xmx1024M (storage on disk) : bloque a 1091328 lignes
    [statistics] connecting to socket on port 4048
    [statistics] connected
    Warning: to avoid a Memory heap space error the buffer of the lookup has been limited to a size of 1091327 , try to reduce the advanced parameter "Max buffer size" (~100000 or at least less than 1091327), then if needed try to increase the JVM Xmx parameter.
    J'ai déjà biensûr essayé d'augmenter xms et xmx. Rien.

    Puis j'ai remis la config initiale et j'obtiens :

    [statistics] connecting to socket on port 3509
    [statistics] connected
    Exception in thread "main" java.lang.Error: java.lang.Error: java.lang.OutOfMemoryError: Java heap space
    at test.proddatetime_0_1.ProdDateTime.tOracleInput_1Process(ProdDateTime.java:2090)
    at test.proddatetime_0_1.ProdDateTime.runJobInTOS(ProdDateTime.java:3695)
    at test.proddatetime_0_1.ProdDateTime.main(ProdDateTime.java:3563)
    Caused by: java.lang.Error: java.lang.OutOfMemoryError: Java heap space
    at test.proddatetime_0_1.ProdDateTime.tOracleInput_2Process(ProdDateTime.java:2878)
    at test.proddatetime_0_1.ProdDateTime.tOracleInput_1Process(ProdDateTime.java:1245)
    [statistics] disconnected
    [statistics] disconnected
    ... 2 more
    Caused by: java.lang.OutOfMemoryError: Java heap space
    at oracle.jdbc.driver.NumberCommonAccessor.getBigDecimal(NumberCommonAccessor.java:5588)
    at oracle.jdbc.driver.NumberCommonAccessor.getObject(NumberCommonAccessor.java:6347)
    at oracle.jdbc.driver.T4CNumberAccessor.getObject(T4CNumberAccessor.java:293)
    at oracle.jdbc.driver.OracleResultSetImpl.getObject(OracleResultSetImpl.java:921)
    at test.proddatetime_0_1.ProdDateTime.tOracleInput_2Process(ProdDateTime.java:2613)
    ... 3 more
    J'ai aussi vu que le composant tMap était par défault limité à 2000000 de lignes et j'ai beau le changer, rien ni fait...
    Auriez vous une solution ? Des suggestions pour améliorer les performances de ce job ?

    Merci d'avance pour vos réponses,
    Dex
    Images attachées Images attachées  

  2. #2
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Points : 2 323
    Points
    2 323
    Par défaut
    Bonjour,

    Pour ma part java.lang.OutOfMemoryError: Java heap space est une erreur java donc qui ne vient pas forcement de ton tMap mais de la mémoire allouée à Talend, sur tes 3go de ram l'ordinateur n'alloue qu'une partie à Talend, est donc quand tu fais trop d'objet en mémoire sa bloque.

    je vois 3 solutions à ton problème :

    - c'est donc la taille du heap space de JVM qu'il faut augmenter. Et sa sur Talend je n'ai jamais regardé :s.

    - Sinon il faut que ton traitement soit "morcelé" tu fais une sorte de boucle qui traite non pas toutes tes tables en même temps mais par exemple 1millions par 1millions si c'est possible.

    - dernière sollution tu demandes une augmentation de PC .
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  3. #3
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Bonjour,
    Merci de votre réponse. J'ai déjà tenté de modifier la taille du heap space de la JVM mais cela ne règle rien à mon problème mais il m'indique qu'il y a un problème concernant le buffer.
    Hier matin, j'avais réussi à faire ce traitement mais quand j'ai voulu retesté, sans raison, j'ai eu la back trace du précédant message.

    Sinon, je ne sais pas comment morceler un traitement, si qqn sait, je suis preneuse !

    Dex

  4. #4
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    Après avoir modifié les paramètres de la JVM sans améliorations, j'en déduis que le problème vient tout simplement de mon manque de RAM.
    Pour ceux que ça intéresse voilà les significations des paramètres de la JVM
    -Xms : initial java heap size
    -Xmx : maximum java heap size

    Encore merci pour votre aide,
    Dex

  5. #5
    Membre averti
    Homme Profil pro
    Chef de projets Décisionnel
    Inscrit en
    Juillet 2007
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projets Décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2007
    Messages : 263
    Points : 320
    Points
    320
    Par défaut Même pb
    bjr
    Je travaille sous Talend 5 et j'ai le même problème.
    J'ai essayé d'augmenter la taille [-Xms : -Xmx : ] ça ne change pas

    Pour 10 million de lignes avec le même Job ça fonctionne avec mySQL mais pas avec Oracle.
    Est-ce que quelqu'un a trouvé un scénario de correction ?

    Merci

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 93
    Points : 110
    Points
    110
    Par défaut
    Salut,

    Quelle est ta configuration:
    ram, os 32/64bits?

    mets un snapshot de ton job en précisant le nombre de ligne attendu par chaque lien.
    N'oublis pas de ne sélectionner dans les composants sgbd que les colonnes que tu utilises.

    C'est pas normale que ca ne passe pas avec 10m de lignes

    boubsy

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    Bonjour,
    Je rencontre le même problème régulièrement.
    - Sous Windows, je n'arrive pas à modifier les paramètres Xms ou Xmx (ni dans Talend, ni dans le .bat) : "could not create the java virtual machine"
    - Sous linux, pas de probleme => ça a solutionné pas mal de soucis.

    Si ça peux en aider certain : j'ai encore rencontré le problème aujourd'hui avec un tMap dans lequel je demandai "match Model=première correspondance". J'ai ajouté un tUniqRow en amont et ai remis "match Model=correspondance unique" et s'est passé.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Java heap space error
    Par SPACHFR dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 17/07/2009, 16h15
  2. [Info] Chargement image et Java heap space
    Par dazz_x dans le forum Langage
    Réponses: 9
    Dernier message: 11/09/2007, 11h51
  3. [jarsigner] java heap space
    Par GLDavid dans le forum Langage
    Réponses: 3
    Dernier message: 16/08/2006, 11h35
  4. Eclipse erreur : java.lang.OutOfMemoryError: Java heap space
    Par sderecourt dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 14/04/2006, 11h28
  5. [ memoire ] Java Heap Space
    Par natha dans le forum Général Java
    Réponses: 10
    Dernier message: 23/01/2006, 11h15

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