Concepts des portes d’activation com+ Low-Memory
En règle générale, la synchronisation n’est pas nécessaire lorsque vous avez un appartement à thread unique (STA), car l’appartement fournit la synchronisation pour vous. La synchronisation devient importante lorsque vous disposez d’un appartement multithread (MTA) et d’un objet à thread libre. Dans le passé, les objets à thread libre devaient gérer le verrouillage. Vous pouvez éliminer la nécessité d’utiliser le verrouillage en définissant l’attribut de synchronisation pour un composant.
Des problèmes de fiabilité se produisent souvent quand les ressources d’un serveur ne peuvent pas réagir efficacement aux pics de charge. Lorsqu’un serveur ne dispose pas de suffisamment de ressources physiques pour répondre à la demande de pointe, il peut épuiser la mémoire virtuelle. Cela devient un problème si le code utilisateur ou le code système ne gère pas correctement les échecs d’allocation de mémoire. Le serveur commence à ralentir et, à mesure que la mémoire est épuisée, les allocations de mémoire échouent. Le serveur exécute les chemins d’erreur pour gérer les échecs d’allocation. Si un chemin d’erreur contient un bogue dans le code système ou utilisateur en cours d’exécution sur le serveur, il est extrêmement difficile d’intercepter et de gérer en toute sécurité.
COM+ tente d’éviter les situations dans lesquelles ces chemins d’erreur doivent être exécutés sur un serveur. Grâce à la fonctionnalité de portes d’activation à faible mémoire, COM+ surveille de manière proactive la charge de mémoire dans le système et garantit qu’une quantité raisonnable de mémoire est disponible avant d’exécuter le code utilisateur. Si le pourcentage de mémoire virtuelle disponible pour l’application est inférieur à un seuil fixe, l’activation échoue avant la création d’une application ou d’un objet serveur COM+ (comme illustré dans l’illustration ci-dessous). En échouant ces activations qui s’exécuteraient normalement, la fonctionnalité de portes d’activation à mémoire faible réduit les problèmes associés aux allocations de mémoire dans le code utilisateur, ce qui améliore considérablement la fiabilité du système.
La fonctionnalité de portes d’activation à mémoire insuffisante s’applique uniquement aux composants COM configurés qui sont installés dans une application COM+.
Fonctionnement de la fonctionnalité portes d’activation Low-Memory
La fonctionnalité de portes d’activation à mémoire faible utilise un niveau de seuil fixe différent en fonction du type d’activation. Lors de la création d’une application serveur COM+, COM+ autorise l’activation si plus de 10 % de la mémoire virtuelle est disponible. Si moins de 10 % est disponible, COM+ effectue une allocation de test pour déterminer si le fichier de pagination peut se développer pour prendre en charge la nouvelle charge de mémoire. Si le fichier de pagination se développe, l’application serveur est créée. Si le fichier de pagination ne peut pas être développé, l’activation échoue et la mémoire n’est pas allouée.
Le processus est similaire lors de la création d’un objet. Dans ce cas, COM+ autorise l’activation si plus de 5 % de la mémoire virtuelle est disponible. Si moins de 5 % est disponible, COM+ effectue une allocation de test. Là encore, si l’allocation de test développe le fichier de pagination, l’objet est créé. Si ce n’est pas le cas, l’activation échoue.
Les niveaux de seuil fixes pour les portes d’activation à mémoire faible ne sont actuellement pas configurables. Pour cette raison, aucune tâche n’est associée à cette fonctionnalité.