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

WinDev Discussion :

FTPRecupère (SFTP) grosse lenteur


Sujet :

WinDev

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 217
    Points : 487
    Points
    487
    Par défaut FTPRecupère (SFTP) grosse lenteur
    Bonjour à tous,

    Je rencontre des problèmes de lenteur lors de l'utilisation de la fonction FTPRecupère sur une connexion de type SFTP.
    Je récupère des fichiers compris entre 20 et 40ko et chaque fichier met environ 2 secondes à être récupéré.
    Je précise que ce n'est pas un problème lié au réseau puisque j'ai testé avec le client Filezilla sur la même machine en ayant pris soin de limiter les transferts à un seul thread pour que la comparaison soit le plus proche possible.
    Avec FileZilla, 15 fichiers par seconde, c'est 30 fois plus rapide.
    J'ai fait le test en FTP normal et il n'y a pas de problème particulier.
    J'ai testé en WD23 et WD24, le problème est le même.

    Quelqu'un peut il me confirmer ces lenteurs ?
    Quelqu'un a t-il trouvé un contournement natif ?

    Nom : 2019-11-14_145212.png
Affichages : 967
Taille : 16,2 Ko


    Merci d'avance

    Cordialement,

    Madsl@nD

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 197
    Points : 12 772
    Points
    12 772
    Par défaut
    Bonjour,
    Je vois à la fin de l'aide en ligne que d'autres se plaignent de problèmes de lenteur.
    Est-ce que tu as essayé de récupérer non pas les fichiers, mais le répertoire (donc sans passer par FtpListeFichier() ) ?
    Avec un peu (beaucoup) de chance ce sera plus rapide…

    Tatayo.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 217
    Points : 487
    Points
    487
    Par défaut
    Malheureusement dans mon cas ce n'est pas possible, on doit pouvoir récupérer qu'une partie du répertoire en fonction de certains masques mais je vais faire le test par curiosité.

  4. #4
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2003
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2003
    Messages : 941
    Points : 1 931
    Points
    1 931
    Par défaut
    Bonjour,

    Peux-tu poster ton code que l'on voit s'il n'ya pas quelque chose qu'on verrait...
    Philippe,


    N'hésitez à lever le pouce si mon aide vous a été utile.

  5. #5
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 198
    Points : 9 184
    Points
    9 184
    Par défaut
    Bonjour,

    Je viens de plonger dams mes souvenirs, quand Windev ne savait faire que du ftp... J'utilisais alors la suite logicielle (gratuite) putty. Dans le package, il y avait psftp. Cà se trouve par ici : https://www.chiark.greenend.org.uk/~...ty/latest.html
    C'est en ligne de commande, c'est un peu technique à mettre en oeuvre, mais ça marche super bien. Je vais essayer de retrouver ça dans mes archives antédiluviennes.
    L'astuce est qu'il faut utiliser un fichier bat pour lancer psftp qui va appeler un bat contenant la liste des fichiers à récupérer.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    914
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 914
    Points : 1 496
    Points
    1 496

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 217
    Points : 487
    Points
    487
    Par défaut
    Bonjour à tous et merci pour vos réponses,

    Le code est le plus simple possible, FTPListeFichier et FTPRecupère, cela ne vient pas du code mais j'ai plus d'informations :
    Ce n'est long que si le répertoire est chargé, comme si le FTPRécupère faisait un FTPListefichier à chaque récupération.
    Quand j'ai 40000 fichiers dans le répertoire, le FTPListeFichier prend 2 secondes, le FTPRecupère légèrement plus aussi.
    Quand j'ai 10 fichiers dans le répertoire, le FTPListeFichier prend 50ms et le FTPRécupère 70ms.
    Du coup je me demande si ce problème n'est pas le même en FTP standard car lors de mon test en standard, je n'avais que très peu de fichiers à redescendre.
    Bref c'est embêtant
    Il y a peut être moyen de faire ça avec FTPCommande mais cela implique peut être de gérer les différents types de FTP, à voir si les commandes sont différentes en FTP et SFTP ...
    Mais oui des solutions non natives il y en a, ce n'est pas un problème et merci de m'en avoir proposé.

    Cordialement,

    Madsl@nD

  8. #8
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2003
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2003
    Messages : 941
    Points : 1 931
    Points
    1 931
    Par défaut
    Ca prend 4 secondes pour lister et récupérer les 40000 fichiers ?
    Philippe,


    N'hésitez à lever le pouce si mon aide vous a été utile.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 217
    Points : 487
    Points
    487
    Par défaut
    Citation Envoyé par philouZ Voir le message
    Ca prend 4 secondes pour lister et récupérer les 40000 fichiers ?
    Non et c'est bien dommage.
    Comme j'ai voulu l'expliquer ça prend environ 2 secondes de faire un FTPListeFichier sur 40000 fichiers dans mes conditions.
    Pour chaque FTPRecupère (1 seul fichier), ça prend un peu plus de 2 secondes comme si le FTPRecupère liste tous les fichiers puis récupère celui en question.
    Donc à ce rythme c'est plus de 22 heures pour récupérer 40000 fichiers alors que cela devrait prendre moins de 5 minutes.

  10. #10
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2003
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2003
    Messages : 941
    Points : 1 931
    Points
    1 931
    Par défaut
    Le FTPRecupere est inclus dans la procedure FTPListeFichier ou le FTPRecupere est fait après avoir listé tous les fichiers ?

    Ne peux-tu pas lancer des FTPRecupere en parallèle avec TâcheParallèleExécute() ?
    Philippe,


    N'hésitez à lever le pouce si mon aide vous a été utile.

  11. #11
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 198
    Points : 9 184
    Points
    9 184
    Par défaut
    Hello,

    Comme promis, j'ai fait une recherche dans mes archives antédiluviennes. C'était en WD12 :
    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
    30
    31
    32
    sFichierIni est une chaîne =  sRepTravail + "param.ini"
     
    sCheminPSFTP est une chaîne = INILit("Chemins","CheminPSFTP","k:\psftp\psftp.exe",sFichierIni)
    sCheminHistorique est une chaîne = INILit("Chemins","CheminHistorique","cd /home/site/wwwroot_secure/depot/fichiers",sFichierIni)
    sNomFichierHistorique est une chaîne = INILit("Chemins","NomFichierHistorique","historique.txt",sFichierIni)
    sScript_put_Historique est une chaîne = sRepTravail + INILit("BAT","Script_put_historique","Script_put_historique.bat",sFichierIni)
     
    Utilisateur est une chaîne = INILit("Utilisateur","USER","",sFichierIni)
    MotDePasse est une chaîne = INILit("Utilisateur","PASSWORD","",sFichierIni)
     
    ////////////////// Creation script de transfert 
    nNumBat est un entier = fCrée(sScript_put_Historique)
    SI nNumBat = -1 ALORS
    	Erreur("Erreur de création du scipt de transfert.....","","Abandon.")
    	RETOUR
    FIN
    fEcritLigne(nNumBat,"lcd " + sRepTravail)						//lcd K:\psftp\Histo\
    fEcritLigne(nNumBat,"cd " + sCheminHistorique) 				//cd /home/site/wwwroot_secure/depot/fichiers
    fEcritLigne(nNumBat,"del " + sNomFichierHistorique) 			//del historique.txt
    fEcritLigne(nNumBat,"put " + sNomFichierHistorique)			//put historique.txt
     
    fFerme(nNumBat)
    ////////////////// Transfert dit
    SI EnModeTest() ALORS
    	sCheminPSFTP = sRepTravail + fExtraitChemin(sCheminPSFTP,fFichier+fExtension)
    FIN
    SI fFichierExiste(sScript_put_Historique) ALORS
    	SI PAS LanceAppli(sCheminPSFTP + " -pw " + MotDePasse + " -b " + sScript_put_Historique + " " + Utilisateur,exeActif,exeBloquant) ALORS
    		Erreur("Erreur lancement SFTP pour TPE URSSAF : " + ErreurInfo())
    		RETOUR
    	FIN
    FIN
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  12. #12
    Membre éprouvé Avatar de der§en
    Homme Profil pro
    Chambord
    Inscrit en
    Septembre 2005
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Chambord
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2005
    Messages : 762
    Points : 957
    Points
    957
    Par défaut
    Pour avoir fait un service sous Windows qui se charge de surveiller et de transférer un serveur sftp externe, qui fonctionne 24h24, je n’ai jamais vu de tel chute de performance (il est compilé sous Windev 23, puis sous 24).

    je pencherait plutôt pour un problème de logique d’imbrication dans ton code.

  13. #13
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2003
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2003
    Messages : 941
    Points : 1 931
    Points
    1 931
    Par défaut
    Citation Envoyé par der§en Voir le message
    je pencherait plutôt pour un problème de logique d’imbrication dans ton code.
    C'est bien pour ça que je lui ai demandé de mettre le code afin qu'on voit s'il n'ya pas un problème à ce niveau. Si le ftprécupère est dans la procédure qui liste les fichiers, ça risque de poser problème par exemple...
    Philippe,


    N'hésitez à lever le pouce si mon aide vous a été utile.

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 217
    Points : 487
    Points
    487
    Par défaut
    Citation Envoyé par der§en Voir le message
    Pour avoir fait un service sous Windows qui se charge de surveiller et de transférer un serveur sftp externe, qui fonctionne 24h24, je n’ai jamais vu de tel chute de performance (il est compilé sous Windev 23, puis sous 24).

    je pencherait plutôt pour un problème de logique d’imbrication dans ton code.
    Bonjour,

    Non impossible, j'ai fait un projet à part dans lequel je n'utilise que le strict minimum, 3 fonctions natives FTPConnecte, FTPListeFichier et FTPRecupère, on ne peut pas faire plus simple.
    Je la refait pour ceux qui n'auraient pas compris

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    FTPConnecte (connexion SFTP)
     
    SI Ok ALORS
     
    FTPListeFichier (je liste 40000 fichiers ~ 2 secondes)
     
    pour chaque fichier FTPRécupère (à chaque appel de FTPRécupère ~ 2 secondes)
     
    FIN
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    FTPConnecte (connexion SFTP)
     
    SI Ok ALORS
     
    FTPListeFichier (je liste 10 fichiers ~ 50 ms)
     
    pour chaque fichier FTPRécupère (à chaque appel de FTPRécupère ~ 70 ms)
     
    FIN
    Cordialement,

    Madsl@nD

  15. #15
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 198
    Points : 9 184
    Points
    9 184
    Par défaut
    @madsland : tu as testé le psftp ?
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  16. #16
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2003
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2003
    Messages : 941
    Points : 1 931
    Points
    1 931
    Par défaut
    J'ai monté un serveur ftp chez moi, alors certes les temps de réponse sont surement meilleurs car je suis en local mais ça donne une idée.

    Voici le code saisi
    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
    nIDFtp est entier = FTPConnecte("127.0.0.1","psb","123")
     
    SI nIDFtp = -1 ALORS 
    	Erreur(ErreurInfo(errMessage))
    	RETOUR
    FIN
     
    JAUGE_SansNom1..BorneMax =  FTPListeFichier(nIDFtp,"/*.*",listeFichier)
    POUR TOUT sFichier DE gtabFichiers
    	SI PAS FTPRécupère(nIDFtp,sFichier,fRepExe()) ALORS
    		Erreur(ErreurInfo(errMessage))
    	FIN
     
    	JAUGE_SansNom1++
    	Multitâche(-1)
    FIN
     
    //********************************************************
    PROCÉDURE listeFichier(Nom, nTaille, sAttribut, sDate, sHeure, nParam)
     
    gtabFichiers.Ajoute(Nom)
     
    RENVOYER Vrai
    Nom : 2019-11-26_07h46_32.png
Affichages : 840
Taille : 36,0 Ko

    Donc soit tu as un problème avec ton serveur ftp, soit un problème de code. Je pense qu'on doit même pouvoir paralléliser la récupération des fichiers ce qui réduirait le temps

    Voilà mon analyse.
    Philippe,


    N'hésitez à lever le pouce si mon aide vous a été utile.

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 217
    Points : 487
    Points
    487
    Par défaut
    Bonjour,

    Citation Envoyé par frenchsting Voir le message
    @madsland : tu as testé le psftp ?
    Nous avions déjà un existant java qui fonctionnait très bien, ceci dit j'ai mis la solution de côté.

    Citation Envoyé par philouZ Voir le message

    Donc soit tu as un problème avec ton serveur ftp, soit un problème de code. Je pense qu'on doit même pouvoir paralléliser la récupération des fichiers ce qui réduirait le temps

    Voilà mon analyse.
    Si tu lis mes différents posts, il y a 2 choses importantes que tu as omis dans ton test :

    1) mon problème est en SFTP pas FTP.

    2) cela concerne une recupération de fichier dans un répertoire où il y a 40000 fichiers.

    Ce sont bien entendu avec ces 2 conditions que cela pose problème.

    Cordialement,

    Madsl@nD

Discussions similaires

  1. Grosse lenteur en debug sous Delphi 7
    Par HooK dans le forum Delphi
    Réponses: 3
    Dernier message: 26/07/2007, 12h36
  2. Réponses: 5
    Dernier message: 09/08/2006, 23h10
  3. Grosse Grosse lenteur
    Par Guttata dans le forum Windows XP
    Réponses: 13
    Dernier message: 03/08/2005, 08h31
  4. Installation 10g : grosses lenteurs
    Par P@t dans le forum Oracle
    Réponses: 4
    Dernier message: 29/06/2004, 22h57

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