G
Guest
We have a small farm of servers, with common resource data shared between
them. The resource data is sitting in a moderately complex directory
structure on a shared Network Storage device. Each server has several
processes that care about the resources, each of which monitors the resources
directory using a FileSystemWatcher. They use this monitor to maintain a
lazily-initialized cache of the resources.
This architecture works fine on a single machine, and seems to *generally*
work on multiple machines. But we've noticed that the multiple-machine case
is considerably less stable in a couple of respects:
First, we get a lot more FileSystemWatcher.Error events being raised. I
haven't ever managed to cause this buffer overflow to happen on a local
machine, but it seems to happen occasionally in the networked environment,
sometimes without apparent cause. My best guess is that the
FileSystemWatcher is intolerant of network glitches, and that these tend to
lead to Errors, but that's just a guess.
More seriously, we now seem to have gotten into a situation where the file
watching is just plain dead. On some of the servers, some of the processes
apparently aren't seeing changes at all any more. It's hard to pin down
exactly why: the processes have been running for months, and there was
definitely some network glitchiness in the middle there. But we were
disturbed to find that the FileSystemWatcher has gone totally silent on us:
no reports, no errors, no nothing.
So this is a general request for insights. Has anyone been using
FileSystemWatcher in this sort of hardcore way, with lots of processes
examining a network storage? If so, have you observed any reliability
issues? In general, does anyone have any *deep* information on exactly how
the FileSystemWatcher works under the hood? I know about the underlying
Windows calls -- I'm talking about below *those*, trying to understand how
the servers are communicating with each other, and particularly how they deal
with communication interruptions, so we can better understand what we need to
be watching for, and whether FileSystemWatcher is really appropriate for the
situation.
(Oh, and note that this is all with .NET Framework 1.1. We'll be upgrading
to 2.0 eventually, but not until VS 2005 is officially released and we're at
a convenient point in a release cycle. I suspect that that isn't relevant to
this problem, but I mention it in case anything has changed...)
them. The resource data is sitting in a moderately complex directory
structure on a shared Network Storage device. Each server has several
processes that care about the resources, each of which monitors the resources
directory using a FileSystemWatcher. They use this monitor to maintain a
lazily-initialized cache of the resources.
This architecture works fine on a single machine, and seems to *generally*
work on multiple machines. But we've noticed that the multiple-machine case
is considerably less stable in a couple of respects:
First, we get a lot more FileSystemWatcher.Error events being raised. I
haven't ever managed to cause this buffer overflow to happen on a local
machine, but it seems to happen occasionally in the networked environment,
sometimes without apparent cause. My best guess is that the
FileSystemWatcher is intolerant of network glitches, and that these tend to
lead to Errors, but that's just a guess.
More seriously, we now seem to have gotten into a situation where the file
watching is just plain dead. On some of the servers, some of the processes
apparently aren't seeing changes at all any more. It's hard to pin down
exactly why: the processes have been running for months, and there was
definitely some network glitchiness in the middle there. But we were
disturbed to find that the FileSystemWatcher has gone totally silent on us:
no reports, no errors, no nothing.
So this is a general request for insights. Has anyone been using
FileSystemWatcher in this sort of hardcore way, with lots of processes
examining a network storage? If so, have you observed any reliability
issues? In general, does anyone have any *deep* information on exactly how
the FileSystemWatcher works under the hood? I know about the underlying
Windows calls -- I'm talking about below *those*, trying to understand how
the servers are communicating with each other, and particularly how they deal
with communication interruptions, so we can better understand what we need to
be watching for, and whether FileSystemWatcher is really appropriate for the
situation.
(Oh, and note that this is all with .NET Framework 1.1. We'll be upgrading
to 2.0 eventually, but not until VS 2005 is officially released and we're at
a convenient point in a release cycle. I suspect that that isn't relevant to
this problem, but I mention it in case anything has changed...)