Quelles sont les limites pratiques au nombre d’instances FileSystemWatcher qu’un serveur peut gérer?

J’ai un service Windows qui instancie actuellement une douzaine d’instances FileSystemWatcher afin de surveiller les dossiers partagés sur le réseau de l’entreprise pour le traitement des fichiers.

Je cherche à append plus d’instances, alors je me demande si quelqu’un ici a de l’expérience (avec les systèmes de production) en ce qui concerne les limites pratiques au nombre d’instances FileSystemWatcher qu’un système de production peut gérer de manière fiable.

Edit: Dans mon cas, la propriété InternalBufferSize n’est pas modifiée, donc InternalBufferSize est la valeur par défaut de 8 Ko … Je suppose que l’augmentation de InternalBufferSize affecterait le nombre d’occurrences FileSystemWatcher pouvant être exécutées simultanément, ce qui fait également partie intégrante de l’équasion. …

Edit: Si vous pensez qu’il s’agit exclusivement d’un problème de ressources et que cela ne dépend que de la quantité de mémoire disponible ou de tout autre aspect matériel du système, partagez votre expérience, des liens vers des documents ou des articles qui corroborent votre opinion … j’aime vraiment entendre quelqu’un qui a atteint la limite en production quelles que soient ses spécifications matérielles, veuillez donc, avant de voter pour fermer, considérez que 7 autres personnes en moins de 20 minutes ont manifesté leur intérêt à entendre quelqu’un qui a repoussé les limites à ce sujet …

FileSystemWatcher sous la couverture utilise ReadDirectoryChangesW http://msdn.microsoft.com/en-us/library/windows/desktop/aa365465(v=vs.85).aspx . Il s’agit d’une opération relativement peu coûteuse qui consiste simplement à lire dans le répertoire une modification effectuée.

Les résultats sont stockés dans une mémoire tampon du kernel avant d’être copiés dans votre propre mémoire tampon de FileSystemWatcher .

Il s’agit des deux ressources de système d’exploitation à prendre en compte, le descripteur créé par l’appel de FileSystemWatcher à CreateFile et la taille de la mémoire tampon de 8 CreateFile (valeur par défaut) dans le kernel pour chaque object FileSystemWatcher qui élimine les pools de kernelx paginés et non paginés de votre système.

Vos FileSystemWatcher sont essentiellement en concurrence pour ces trois ressources.

  1. Temps CPU pour traiter les modifications
  2. Poignées sur le système
  3. Pool de pages

Il est peu probable que vous renconsortingez un problème avec (2). Susceptible de rencontrer un problème avec (3) sur un système d’alimentation (charges de processeur) exécutant x86. Sinon (1) sera votre limite.

Poignées

Les poignées sont épuisables (spécialement sur x86), pour plus d’informations à ce sujet, http://blogs.technet.com/b/markrussinovich/archive/2009/09/29/3283844.aspx

Mais à 16 millions de poignées + (même sur x86) avant de vous épuiser, pour vos intentions, je considérerais cela comme une ressource infinie. Vous allez épuiser les modifications de traitement du processeur bien avant que vous atteigniez une limite du système d’exploitation.

Page / Pools non paginés

Page / Les pools non paginés sont visibles dans le gestionnaire de tâches. Sur x86, ils sont très finis. Plus d’informations ici, http://msdn.microsoft.com/en-us/library/windows/desktop/aa366778(v=vs.85).aspx#memory_limits

CPU

Vous verrez des tonnes de preuves anecdotiques selon lesquelles lorsque cela est épuisé, FileSystemWatcher cesse de fonctionner. Certaines modifications apscopes aux répertoires sont signalées, d’autres non, et inévitables dans les mises en œuvre volumineuses de FileSystemWatcher vous FileSystemWatcher par devoir détecter ces occassions et créer un répertoire vous-même ou sur des bases de sondage.

Remarques

Si vous implémentez une charge de FileSystemWatcher soyez FileSystemWatcher ;

  1. Tampon déborde
  2. Taille de la mémoire tampon supérieure à 64 Ko sur les chemins réseau.

Plus d’informations sur les bonnes pratiques de codage pour cet object ici, http://bytes.com/topic/visual-basic-net/answers/536125-filesystemwatcher-across-network#post2092018