J'utilise URL.openStream()
pour télécharger de nombreuses pages html pour un moteur de balayage que j'écris. La méthode fonctionne très bien localement sur mon mac mais sur mes écoles unix serveur la méthode est extrêmement lente. Mais seulement lors du téléchargement de la première page.URL.openStream() est très lent lorsqu'il est exécuté sur le serveur unix de l'école
Voici la méthode qui télécharge la page:
public static String download(URL url) throws IOException {
Long start = System.currentTimeMillis();
InputStream is = url.openStream();
System.out.println("\t\tCreated 'is' in "+((System.currentTimeMillis()-start)/(1000.0*60))+"minutes");
...
}
Et la principale méthode qui l'invoque:
LinkedList<URL> ll = new LinkedList<URL>();
ll.add(new URL("http://sheldonbrown.org/bicycle.html"));
ll.add(new URL("http://www.trentobike.org/nongeo/index.html"));
ll.add(new URL("http://www.trentobike.org/byauthor/index.html"));
ll.add(new URL("http://www.myra-simon.com/bike/travel/index.html"));
for (URL tmp : ll) {
System.out.println();
System.out.println(tmp);
CrawlerTools.download(tmp);
}
Sortie locale (Note: tous sont rapides):
http://sheldonbrown.org/bicycle.html Créé 'est' à 0,00475 minutes
http://www.trentobike.org/nongeo/index.html Créé 'est' dans ,005083333333333333 minutes
http://www.trentobike.org/byauthor/index.html Créé 'est' dans ,0023833333333333332 minutes
http://www.myra-simon.com/bike/travel/index.html Créé 'est' à 0,00405 minutes
Sortie sur le serveur de la machine scolaire (Remarque: Tous sont rapides sauf le premier. Le premier est lent, peu importe ce que le premier site est):
http://sheldonbrown.org/bicycle.html Créé 'est' dans 3,2330666666666668 minutes
http://www.trentobike.org/nongeo/index.html Créé 'est' dans ,016416666666666666 minutes
http://www.trentobike.org/byauthor/index.html Créé 'est' en 0.0022166666666666667minutes
http://www.myra-simon.com/bike/travel/index.html Créé « est » dans ,009533333333333333 minutes
Je ne sais pas si cela est un problème Java (* Un problème dans mon code Java) ou d'un problème de serveur. Quelles sont mes options?
Lorsqu'il est exécuté sur le serveur c'est la sortie de la commande de temps:
real 3m11.385s
user 0m0.277s
sys 0m0.113s
Je ne sais pas si cela est pertinent ... Que dois-je faire pour essayer d'isoler mon problème. ?
De quel type d'URL s'agit-il? Cela arrive-t-il pour n'importe quelle URL ou seulement pour des URL spécifiques? Quel genre de connexion est-ce? –
Avez-vous toujours la sortie complète, même si cela prend 3 minutes? Ou faut-il 3 minutes pour expirer et ne retourner aucune donnée? – VoteyDisciple
Etes-vous autorisé à exécuter votre robot à l'école? De toute façon, votre meilleur pari est de contacter le networkadmin de l'école. – BalusC