Un de nos clients nous avait contacté pour nous signaler un problème sur son service de messagerie : il lui était impossible de recevoir des messages, mais il pouvait malgré tout en envoyer. Les files d'attentes de leur système de messagerie présentaient un message d'erreur assez étrange :
452 4.3.1 Insufficient system resources
De ce que le message laisse penser, le serveur de messagerie semble trop "limite" en ressources disponibles pour pouvoir assurer un fonctionnement normal... Pourtant dans ma situation :
- La RAM était ok
- Le processeur n'était pas excessivement chargé
- Il me restait de la place libre sur le disque hébergeant la database Exchange... pas énormément cependant!
A partir de ce moment, j'ai du effectuer des recherches pour en arriver à découvrir et comprendre le principe de la fonctionnalité nommée :
Back Pressure
Back Pressure est une fonction de Microsoft Exchange disponible depuis 2007 jusque 2013, et qui est une "soupape" de sécurité pour l’intégrité des données du serveur.
Pour faire simple, toutes les X secondes, une vérification est effectuée sur certains critères du service de messagerie :
- Espace libre sur le disque dur stockant la file d'attente
- Espace libre sur le disque dur stockant la base des journaux de transactions de la file d'attente
- Le nombre de messages non traités dans la file d'attente
- La mémoire utilisée par EdgeTransport.exe
- La mémoire utilisée par tous les autres processus
Pour chacune de ces ressources surveillées sur un serveur Exchange, trois niveaux d'utilisations existent :
- Normal : La ressource n'est pas sur-exploitée, et le serveur accepte les nouvelles connexions et les nouveaux messages.
- Moyen : La ressource est légèrement sur-exploitée. Le serveur applique BackPressure à un niveau moindre, les messages internes au domaine fonctionnent mais cependant, en fonction de la ressource mise à mal, le serveur fait du tarpitting (c.a.d impose un délai exponentiel) sur les réponses du serveur ou bien rejette les commandes MAIL FROM venant d'autres sources.
- Haute : La ressource est fortement sur-exploitée. Un Back Pressure complet est activé. Tous les flux de messages s'arrêtent, et le serveur rejette toute nouvelle commande MAIL FROM.
Comment récuperer le service de messagerie?
Il y'a trois possibilités pour faire de nouveau fonctionner votre service de messagerie, mais concrètement, une seule est viable et pérenne. Pour être pris en compte, les points 2 et 3 nécessitent un REDÉMARRAGE DU SERVICE TRANSPORT EXCHANGE.
- S'attaquer à la racine du problème : Back Pressure se déclenche à cause de l'espace disque? Déplacer les logs de transaction vers un autre disque, voir dédiez un disque complet, ou augmentez la taille de votre partition pour permettre d'avoir l'espace suffisant. Une activation de Back Pressure est signe d'une erreur de calcul de sizing de votre serveur sur un des points critiques pour Back Pressure. Cette option est la SEULE permettant de s'assurer un fonctionnement correct de votre messagerie malgré l'indisponibilité qui découle de l'activation de la fonctionnalité.
- Modifier les seuils de déclenchement de Back Pressure : Les critères d'activation sont définis dans le fichier EdgeTransport.exe.config, situé dans le repertoire %ExchangeInstallPath%\Bin . Par exemple, la limite définissant le status "Haut" pour l'espace disque libre pour la base de données des messages en attente est la suivante : 100*(harddisk size - fixed constant)/harddrive size . La valeur de fixed constant est de 500 Mb. Ainsi, avec les valeurs par défaut, le niveau "Moyen" se déclenchera à 2% en dessous de cette valeur. Dans le fichier EdgeTransport.exe.config, vous trouverez un paramètre nomme PercentageDatabaseDiskSpaceUsedMediumThreshold qui définit la limite de 2% pour passer en niveau "Moyen". Le technet Microsoft recense et explique la plupart des lignes du fichier de configuration.
- Désactiver Back Pressure : Ferme et définitif... mais bien dangereux. En faisant cela, vous exposez votre serveur à des risques de saturation d'espace disque et donc de perte de données, d'instabilité totale du serveur, voir d'impossibilité de le relancer. Faites cela uniquement si la situation l'impose, et ne prenez aucun délai pour corriger la source du déclenchement ! Pour cela, mettez la clé EnableResourceMonitoring sur false , et Back Pressure sera désactivé.