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

Concurrence et multi-thread Java Discussion :

[Thread] Exception levé


Sujet :

Concurrence et multi-thread Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 889
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 889
    Par défaut [Thread] Exception levé
    Bonjour

    En réalité, je travaille sur un servlet, mais le problème est localisé dans un thread qui fait un exec de ssh. Je sais, c'est un peu tordu.
    Ma servlet consulte une base de données. En fonction d'un nombre rendu par cette base, je crée autant de répertoires que ce nombre. Seulement, je dois le faire sur une machine distante, d'où un appel ssh. Comme c'est une opération lourde, je le fais dans un thread. Voici le code de thread :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    Thread t = new Thread(){
    			public void run(){
    				try{
    					for(long i=0; i<param.getSize(); i++){
    						Runtime.getRuntime().exec("ssh gldavid@cluster mkdir -p /home/gldavid/Blaster/"+id_user+"/"+id_job+"/"+i);
    					}
    				}catch(IOException ioe){
    					Blaster.this.pw.print("<font color=\"#FF0000\"><b>");
    					ioe.printStackTrace(Blaster.this.pw);
    					Blaster.this.pw.print("</b></font>");
    					Blaster.this.destroy();
    				}
    				synchronized(Blaster.this) {
    					Blaster.this.notify();
    				}
    			}
    		};
    		t.start();
    		synchronized(this) {
    			try {
    				this.wait();
    			} catch (InterruptedException e) {
    				pw.print("<font color=\"#FF0000\"><b>");
    				e.printStackTrace(pw);
    				pw.print("</b></font>");
    				this.destroy();
    			}
    		}
    Or, à l'exécution, je constate qu'il me crée une partie de l'arborescence mais il sort avec cette exception levée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java.io.IOException: java.io.IOException: Too many open files at java.lang.UNIXProcess.(UNIXProcess.java:148)
    Aïe ! C'est gênant d'autant plus que le nombre de sous-répertoires peut être gros (environ 1000).
    Donc, mon problème réside t'il en mon code Java ou dans mon appel ssh ?

    Merci d'avance de votre réponse.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  2. #2
    Membre éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Par défaut
    Salut, a mon avis c'est unix...

    je viens de tombé la dessus au cas ou tu bosserai sur HP-UX ou UNIX-like

    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
    20
    21
    22
    23
     
    Pourquoi un modèle de ressource échoue-t-il sur HP-UX ?
    Un paramètre de noyau a peut-être été défini avec une valeur trop faible si
    l’un des messages d’erreur suivants est consigné dans le journal
    trace_dmxengine.log :
    OutOfMemory Exception
    —OU—
    - java.io.IOException: Too many open files caught running /bin/sh -c
    Pour augmenter la valeur du paramètre de noyau, procédez comme suit :
    1. Accédez au noeud final HP-UX et exécutez la commande sam.
    2. Sélectionnez Kernel Configuration –Configurable Parameters.
    3. Procédez comme suit :
    Pour l’erreur, OutOfMemory Exception :
    Augmentez la valeur du paramètre max_thread_proc. Ce paramètre
    définit le nombre maximal d’unités d’exécution admises dans chaque
    processus. Il est défini à 64 unités par défaut.
    —OU—
    Pour l’erreur - java.io.IOException: Too many open files caught
    running /bin/sh -c :
    Augmentez la valeur du paramètre maxfiles. Ce paramètre définit la
    taille du fichier électronique par processus. La valeur maximale que
    vous pouvez définir à l’aide de la commande SAM est de 2048. Par
    défaut, cette valeur est définie à 60.
    Sinon essayer de faire plein de ssh traitant peu (pas trop en tout cas) de fichier chacun...

  3. #3
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 889
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 889
    Par défaut
    Salut BainE

    Je me doutais que c'était Unix. Tes dires confirment mon hypothèse. Je vais essayer en invoquant un script shell. On verra bien. Le script que je viens d'écrire me crée mes répertoires correctement. Reste à voir comment il va se comporter avec un appel via Java.

    @++ et merci de ta réponse.
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  4. #4
    Membre éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Par défaut
    Joli contournement

    Tu n'as pas le droit de modifier les parametres du serveur ?

  5. #5
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 889
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 889
    Par défaut
    Salut BainE

    Le problème est que je n'ai pas les droits root sur la machine distante et bien sûr, le sysadmin est en congés
    Bref, je vais devoir biaisé car même en appelant un script shell, j'ai le droit à la même exception.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Juste une question : quel est l'intérêt de faire un thread si le thread courant est endormi en attendant la fin du premier ???? Autant faire directement le traitement...

    a++

  7. #7
    Membre éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Par défaut
    Ah ces SysAdmin, c'est les meme partout

    tu va etre obligé de lancer un ssh par fichier...

    Bon courage

  8. #8
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 889
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 889
    Par défaut
    Sauf qu'en lançant 1 ssh par fichier, j'ai peur d'avoir la même erreru Wait and see.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

Discussions similaires

  1. Réponses: 6
    Dernier message: 02/11/2009, 13h18
  2. Réponses: 4
    Dernier message: 09/10/2009, 10h52
  3. Réponses: 1
    Dernier message: 08/11/2008, 22h46
  4. [VB.NET 2.0] Cross-Thread Exception
    Par guillaume1998 dans le forum Windows Forms
    Réponses: 13
    Dernier message: 30/01/2006, 18h16
  5. [thread] Exception non catchée
    Par mammistegon dans le forum Concurrence et multi-thread
    Réponses: 3
    Dernier message: 22/11/2004, 21h43

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