我有一个实例目前大约十几一个窗口服务FileSystemWatcher
实例来监视整个公司网络中的共享文件夹的文件进行处理。
我期待到增加更多的实例,因此我不知道是否有人在这里有经验(生产系统),什么是对的数量的实际限制FileSystemWatcher
情况下,生产系统可以可靠地处理?
编辑:在我的情况下,InternalBufferSize属性没有被修改,因此InternalBufferSize是默认的8 KB ...我承担InternalBufferSize的增加将影响到数FileSystemWatcher
系统可以运行simultanesouly实例,这样也是equasion的一部分...
编辑:如果你认为这是一个专门的资源问题,它只能依赖于可用内存或系统的一些其他硬件方面的金额,请分享你的经验或文档链接或证实你的观点的文章...我会真的很喜欢从别人谁投票,收考虑其他7人在不到20分钟内从别人谁推这个极限听力已表示有兴趣之前,无论其硬件规格,所以请的达到生产极限听到...
FileSystemWatcher
掩护下使用ReadDirectoryChangesW
http://msdn.microsoft.com/en-us/library/windows/desktop/aa365465(v=vs.85).aspx 。 这是一个相当便宜的操作这仅仅是一个读从一个变化完成的目录。
结果存储在内核缓冲区它们复制到你自己的内存缓冲区之前FileSystemWatcher
。
这两个操作系统的资源来考虑,通过调用创建的句柄CreateFile
通过FileSystemWatcher
,并且在内核中为每个8KB(默认)的缓冲区大小FileSystemWatcher
对象,它需要从系统内核分页,距离无分页池。
您FileSystemWatcher
s的基本上是这三种资源的竞争。
- CPU时间来处理变化
- 处理系统
- 页面池
你不可能击中(2)中的问题。 可能击中(3)电力系统(CPU的负载)运行86个问题。 否则(1)将是你的极限。
手柄
句柄是可耗竭(特别是在x86),更在这这里, http://blogs.technet.com/b/markrussinovich/archive/2009/09/29/3283844.aspx
但在1600万个+手柄(甚至在x86),你用完之前,为您intententions,我认为它是一种无限的资源。 你打任何操作系统限制之前,你会耗尽CPU处理好变化。
页/非分页池
页/非分页池可以在任务管理器中看到。 在x86他们是非常有限的。 这里更多, http://msdn.microsoft.com/en-us/library/windows/desktop/aa366778(v=vs.85).aspx#memory_limits
中央处理器
你会看到的传闻证据表明,当这个被耗尽,负载FileSystemWatcher
排序停止工作。 一些目录更改得到报告,有些则没有,而且必然对大型实现FileSystemWatcher
你最终不得不检测这些occassions,做一个目录列表自己,或者做一个轮询基地。
笔记
如果您正在实施的负载FileSystemWatcher
腕表出来;
- 缓冲液中运行
- 缓冲区大小大于64KB的网络路径。
更多关于好的编码做法在这里这个对象, http://bytes.com/topic/visual-basic-net/answers/536125-filesystemwatcher-across-network#post2092018
文章来源: What are practical limits on the number of FileSystemWatcher instances a server can handle?