Microsoft KB 911272 描述了我们遇到的一种情况,即我们设法通过 ASP.NET 耗尽了 SMB 文件更改通知系统对象。我们实施了修补程序,但有人知道我们可以监视的系统性能计数器以避免将来出现这种情况吗?
答案1
事实证明有一个性能计数器:重定向器->当前命令。
答案2
我建议使用文件更改通知对象的人们运行单身的高性能线程将更改通知添加到高性能内存队列中,不执行任何其他操作,甚至不记录日志。由于将项目推送到队列应该非常快,文件更改通知的队列只有 8KB,因此很容易溢出。然后,其他工作线程或进程负责从队列中弹出项目并懒惰地执行与这些更改事件相关的工作。通过这种设计,我每秒能够响应数千个更改通知。如果我需要更高的性能,我只需添加更多工作线程/进程来为队列提供服务。注意:您需要精通多线程开发,包括使用或创建线程安全对象。
如果内部缓冲区溢出,您可以捕获该事件并做出响应。
http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.error.aspx