2016-08-30 3 views
0

リモートサーバーには1百万のファイルがあります。これらのファイルは頻繁に更新されます。チェックした後、特定の時刻にローカルサーバーにファイルをダウンロードします。このダウンロードは、ファイルサイズの変更とリモートサーバーファイルとローカルサーバーファイルの変更時間に基づいて行われました。Java IOファイルの長さ()とlastModified()は、何百万のファイルで遅く実行します。

  1. このチェック(長さ()とLASTMODIFIED()を使用しては)IOの多くは、ローカルサーバーで呼び出して、これはいくつかのシナリオである)(長さとLASTMODIFIEDの両方を使用する必要があります。

  2. 注意:リモートサーバーはFTPサーバーであり、制御することはできません。 私はデータを取得するために100から200のリモートFTPサーバーを持っています。各 FTPサーバーにはスレッドがあります。

    ローカルファイルのIO呼び出しを減らすことができる効率的なソリューションを提案してください。リモートサーバーで問題はありません。

    ありがとうございました。

+0

あなたはサイズだけでなく修正時間をチェックすることができます。私はそれが同じ 'lstat'呼び出しではないかどうかはわかりません。とにかく、ネットワーク上のファイルシステムではなく、ローカルマシン上でチェックを実行してください! –

+0

同期が利用可能かどうかを確認しますが、より良いアクセス権がない場合は... –

+0

同期についての説明や共有をお願いします。理解できませんでした。 – user0011

答えて

2

ネットワークコールは高価です。その日以降に変更されたファイルの日付と戻りリストを受け取るサーバーを作成し、それをリモートマシンで実行することをお勧めします。次に、必要なファイルのみをダウンロードします。

リモートホストがLinuxサーバーの場合は、変更されたファイルのリストを取得するために適切なパラメータを使用してfindを実行することができます。この場合はunix.stackexchange.comにご相談ください。

+0

リモートサーバーはFTPサーバーであり、私はそれを制御できません。 – user0011

+0

FTP経由でアクセスできる場合は、何もできません。 – talex

+0

はここでNIO APIを使用していますか? – user0011

関連する問題