Nous avons des serveurs de terminaux physiques sous Windows Server 2022, où les utilisateurs se connectent et exécutent des applications, y compris des calculs par éléments finis. Selon ce que font les utilisateurs, les applications peuvent consommer tout le processeur et la RAM, et Windows devient instable.
Le journal Système contient des erreurs comme :
Application popup: dwm.exe - System Error : The process has terminated
because it could not allocate additional memory.
Et des avertissements de mémoire insuffisante :
Windows successfully diagnosed a low virtual memory condition. The following programs consumed the most virtual memory: fl_mpi2320.exe (7256) consumed 8,306,704,384 bytes, fl_mpi2320.exe (6020) consumed 6,652,760,064 bytes, and fl_mpi2320.exe (11188) consumed 6,635,606,016 bytes.
C’est problématique car les processus système plantent. Les connexions Bureau à distance ne fonctionnent plus, et nous devons redémarrer les hôtes à distance pour récupérer.
J’ai cherché des solutions, mais je n’ai pas trouvé de moyen de garantir que les processus utilisateur ne puissent pas affecter le système de cette façon (ni paramètres système ni GPO). Augmenter le fichier d’échange pourrait repousser le problème un peu, mais ne le résoudra pas.
Ajouter de la RAM n’est pas une option. La mémoire est suffisante pour ce que les utilisateurs doivent faire, à quelques exceptions près, et il y aura toujours quelqu’un qui essaiera de calculer quelque chose de trop gros pour tenir en mémoire. L’éducation des utilisateurs serait la meilleure solution, mais elle ne fonctionne pas assez bien, car beaucoup de gens veulent simplement voir leurs résultats le plus rapidement possible.
Il est possible d’écrire un service Windows qui tue les processus utilisateur quand ils utilisent trop de mémoire, mais il pourrait être trop tard pour le système. Les tuer à distance ne ressuscite pas les machines quand la mémoire est épuisée.
Comment puis-je empêcher le système d’allouer trop de mémoire ?