2012-04-17 10 views
23

私は現在、約12ダースのFileSystemWatcherインスタンスをインスタンス化して、処理されるファイルの企業ネットワーク全体の共有フォルダを監視しています。サーバが処理できるFileSystemWatcherインスタンスの数にはどのような制限がありますか?

これ以上のインスタンスを追加しようとしていますので、実稼働システムが確実に処理できるインスタンス数の実際の制限は何ですか?

編集:私の場合、InternalBufferSizeプロパティは変更されていないので、InternalBufferSizeはデフォルトの8KBです。FileSystemWatcherインスタンスの数に影響すると思います。システムはsimultanesoulyでも実行できます均等の一部...

編集:これは排他的にリソースの問題であり、利用可能なメモリの量やシステムの他のハードウェアの側面に依存していると思われる場合は、あなたの意見を裏付ける記事...ハードウェアの仕様にかかわらず、制作の限界に達した人から本当に聞きたいのですが、20分以内に他の7人を閉じることを検討する前に投票してくださいこれに限界を押し込んだ人からの聴聞に興味を示しました。

+0

1つまたは少数を使用して、すぐ内側フィルタリングないのはなぜ - のようなバッファオーバーフローを避けるために、 'ドキュメントで推奨、NotifyFilterとIncludeSubdirectoriesプロパティを使用しますあなたは不要な変更通知をフィルタリングすることができます ' - それはうまくいくのでしょうか? – NSGaga

+0

@NSGaga、監視されたフォルダは企業ネットワークのさまざまなサーバーにあります... –

+0

あなたはあなたの質問にも役立つかもしれませんが、問題。たとえば、 「リモートマシンごとに1つ」? – NSGaga

答えて

18

FileSystemWatcherは、カバーの下にReadDirectoryChangesWhttp://msdn.microsoft.com/en-us/library/windows/desktop/aa365465(v=vs.85).aspxを使用しています。これは合理的に安価な操作で、変更を完了したディレクトリからの読み込みだけです。

結果は、カーネルバッファに保存されてから、自分のメモリバッファFileSystemWatcherにコピーされます。

システムのカーネルページングされたとなしから奪う各 FileSystemWatcherオブジェクトのために、考慮カーネルで FileSystemWatcherによって CreateFileへの呼び出しによって作成されたハンドル、および8キロバイト(デフォルト)バッファサイズを取るために、2つのOSのリソースをだ

- ページプール。

お客様のFileSystemWatcherは、これらの3つのリソースに対して本質的に競合しています。変更

  • を処理する

    1. CPU時間は、あなたは(2)の問題をヒットしそうだシステム上
    2. ページプール

    を処理します。 x86を実行している電源システム(CPUの負荷)で(3)の問題が発生する可能性があります。 それ以外の場合は(1)が上限になります。

    あなたが出て実行する前に、あなたのintententionsのために、私は」

    ハンドルは、ここでより多くの本に、http://blogs.technet.com/b/markrussinovich/archive/2009/09/29/3283844.aspx

    (特別x86版)枯渇しているが(でもx86版)16million +ハンドルでハンドルそれを無限の資源と考える。 OSの制限を超える前に、CPU処理の変更をうまく使い果たしてしまいます。

    ページ/非ページプール

    ページ/非ページプールは、タスクマネージャで見ることができます。 x86では非常に有限です。もっとここで、http://msdn.microsoft.com/en-us/library/windows/desktop/aa366778(v=vs.85).aspx#memory_limits

    CPU

    あなたは、作業停止のFileSystemWatcherソートをこれが排出されるという事例証拠の負荷が表示されます。 FileSystemWatcherの大規模な実装では、これらの機会を検出して自分自身のディレクトリを作成したり、ポーリングベースでディレクトリを作成したりする必要があります。

    ノート

    あなたはFileSystemWatcher秒に気を付けるの負荷を実装している場合。ネットワーク経路上の64キロバイトより

  • バッファサイズより大きいランオーバー

    1. バッファ。
    2. ここで、このオブジェクトのための適切なコーディングプラクティスの

    より、http://bytes.com/topic/visual-basic-net/answers/536125-filesystemwatcher-across-network#post2092018