いくつかのテスト中に、私たちのチームの1人がFTP経由でディレクトリにアクセスしようとしているタイムアウトを報告しました。原因はコード内のバグで、何百万もの小さなファイルが作成されていました。FTPはページングをサポートしていますか?
タイムアウトの理由は、要求がディレクトリの内容を表示するよう要求し、すべてのファイルで1つの応答を待つことです。
代わりに、サーバーが見つかった時点で結果を返すようになった場合(yield return
とreturn
)、タイムアウトが発生します。同様に、ページされたデータを返すオプションがあれば、回避策が得られるかもしれません。
FTPがrequest-response
であるため、request-response-response-...
ではなく、yield return
のシナリオは実現できません。しかし、何らかの形式のページングが可能性があります。つまり、ページングは何らかの形式のソートを意味するため、これは解決策ではないでしょう。それ自体がファイル数のオーバーヘッドスケーリングにつながります。
注意:これは好奇心からの質問です。問題を解決するために単にディレクトリ(https://stackoverflow.com/a/6208144/361842)をパージしたので、実際の問題は解決されています。しかし、フィードの結果を元に戻すオプションがある場合、フォルダ内のアイテムの数が潜在的な問題でなくなります(返される前に結果を並べ替え/フィルタリングしない限り)。 FileZilla Server
と.Netクライアント(System.Net.FtpWebRequest
)を使用しています。これは理論的なものなので、私たちの実装に固有のものよりも一般的な答えに興味があります。