Question

Je comprends que la réponse à cette question peut dépendre des paramètres de Registre et la version de Windows, et peut-être sur la quantité de RAM s'il n'y a pas assez de mémoire. Par souci de cette question, supposons que le serveur a beaucoup de RAM (3+ GIB).

Si une application (application 3ème partie dans ce cas) fuites poignées à quelques centaines d'heures, combien de poignées total peut cette fuite d'application avant d'autres applications se heurtera à des problèmes? Par « troubles » Je veux dire, par exemple, ne parviennent pas à démarrer un thread, ne parviennent pas à ouvrir un fichier, et ainsi de suite.

Je l'ai vu certains serveurs (légèrement chargés) fonctionnent très bien avec un processus (généralement un processus de base de données) en utilisant quelques dizaines de milliers de poignées, de sorte que l'ancienne limite de 10000 poignée est clairement pas la question ici. (Et ce fut une toute façon limite par processus, ne concernerait donc pas ma demande qui est bien en ce moment-là.)

Quelqu'un peut-il répondre à la question soit ou me montrer à certaines ressources qui expliquent sur le nombre total de poignées un serveur Windows permettra avant d'exécuter efficacement (des poignées ou d'autres ressources du système)?

Était-ce utile?

La solution

Voir le post Raymond Chen sur ce sujet . Le gestionnaire de fenêtres impose une limite de 10K par processus, et a une limite totale de 32K à travers le système. Donc, si ce « seulement » fuites 100 poignées par heure, alors vous avez quelques jours de disponibilité avant qu'il ne commence mauvaise conduite.

Notez que toutes les poignées sont égales. Les poignées de fenêtre ne sont pas DB poignées, par exemple, et peuvent suivre des règles différentes. Donc, cette restriction pourrait ne pas appliquer, selon ce qui gère en quelque sorte le programme fuit. lire aussi ce billet de blog.

Autres conseils

Le segment de bureau , qui est un pool de mémoire où le vrai « trucs » la poignée représente la vie. Il est parfois pas tellement combien vous poignées avez alloué, mais la quantité de mémoire chaque objet sous cette poignée utilise Vous pouvez déboguer le tas cette façon . Il est un à installer.

(cela a été recyclé d'une autre de mes réponses)

Étant donné que ces valeurs peuvent changer avec les nouvelles versions de Windows, vous pouvez utiliser l'outil Sysinternals TestLimit / TestLimit64 pour obtenir une estimation approximative. La version 64 bits peut fonctionner pendant un certain temps, en particulier pour le test de mémoire (il peut utiliser le disque dur (fichier d'échange) pour obtenir plus de mémoire virtuelle).

Obtenez les outils de http://live.sysinternals.com/WindowsInternals/ ou http://download.sysinternals.com/files/TestLimit.zip

Options de ligne de commande:

-p check process limit
-t check thread limit
-h check handle limit
-u check user handle limit

Selon cette , 10000.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top