2010-10-19 5 views
0

Nous avons créé une application Java qui utilise, entre autres, les bibliothèques d'E/S de fichiers pour accéder à une liste de fichiers dans un dossier particulier. un partage réseau. Lorsque le dossier est spécifié en tant que fichier local (par exemple, c: \ foobar), les performances sont bonnes. Toutefois, si nous mappons un lecteur réseau vers le dossier, même si le dossier est sur la même machine (par exemple, z: \ -> c: \ foobar), les performances passent par le sol. Des idées sur ce qui pourrait causer le problème? Plus important encore, des suggestions sur la façon d'améliorer la situation?Amélioration des performances d'entrée/sortie du fichier java lors de l'utilisation d'un lecteur réseau mappé sous Windows

+1

Ce qui pourrait être à l'origine du problème: SMB :-) Essayez peut-être simplement d'accélérer l'accès distant FS (par exemple demander sur la pile de superutilisateur) ou d'utiliser plus de buffering (BufferedReader, etc, ou plus manuellement). Si le travail est en "arrière-plan", vous pouvez également rendre l'application "plus réactive" en utilisant des threads de travail. –

+0

Y a-t-il beaucoup de fichiers dans le répertoire? Le retard peut provenir de Windows envoyant une énorme liste de fichiers à travers le protocole. –

+0

Il peut en effet y avoir plusieurs fichiers (milliers) dans le répertoire. Qu'est-ce que c'est que le protocole qui ralentit les choses? Nous n'avons pas ce problème sur Linux ou Solaris. –

Répondre

1

Vous n'avez pas indiqué quelle version de Windows vous utilisez mais il est bien connu que les premières versions de SMB ont performance issues. En un mot: plus tard (par exemple Windows Server 2012) = mieux quand il s'agit de performances, même si vous devez vous assurer que le client et le serveur travaillent sur la dernière version de SMB pour des performances maximales.

Questions connexes