onsdag, februari 21, 2007

Back Pressure i Microsoft Exchange Transport tjänsten

Transport tjänsten i Exchange 2007 som är en del i Hub Transport rollen samt i Edge rollen har en liten intressant funktion som jag tänkt skriva om länge. Men när jag idag pratade med en kund som fått problem med den kom jag på att det var dags att få tummen ur och skriva...

Back Pressure funktionen i Transport-tjänsten (MSExchangeTransport) är till för att skydda servern om den har för hög belastning. Istället för att stänga tjänsten slutar den istället att acceptera meddelanden som skickas till den. Till en början slutar den ta emot mail från externa system och Internet, och om trycket blir hårdare slutar den också ta emot mail från mailbox-servrarna. När belastningen sjunker börjar den återigen acceptera meddelanden. Med hög belastning menas högt minnesutnytjande eller lite diskutrymme på den disk där Transport-tjänstens kö-databas och dess transaktionsloggar ligger (Exchange 2007 hanterar sina köer i en ESE databas istället för i filsystemet som Exchange 2000/2003).

Men den här funktionen kan kan få intressanta konsekvanser om man inte känner till den. Speciellt kan den slå till på maskiner med små partitioner och dåligt med minne. Speciellt i virtuella labmiljöer kan det här ställa till med problem. För om Transport-tjänsten uptäcker att det finns mindre än 4GB ledigt utrymme på den volym där kö-databasen ligger, kommer den slå till och stoppa inkommande meddelanden. Det här får förståss till följd att inga mail kommer in, men också att utgående mail blir kvar i Utkast/Drafts mappen i Outlook. Tittar du i Applikations-loggen kommer du säkert hitta en varning med EventID 15001, 15002 eller 15003.

För att lösa problemet finns det en del varianter. Bäst är förståss att flytta kö-databasen och dess loggar till en volym med mer diskutrymme. Men vi kan också skruva lite på de värden som triggar tjänsten att strypa mailflödet. Flytta kö-databasen gör man genom att editera filen msexchangetransport.exe.config som ligger i ?:\program files\microsoft\Exchange Server\bin. Under QueueDatabasePath och QueueDatabaseLoggingPath kan vi tala om vart vi vill att databasen och loggarna ska ligga. Ändra sökvägen och starta om Microsoft Exchange Transport tjänsten så skapas en ny databas (Den gamla kommer ligga kvar tills du städat bort den). Vill du återanvända den gamla databasen kan du stoppa tjänsten, manuellt flytta filerna till den nya sökvägen och därefter starta tjänsten. Om systemet bara används i labsyfte kan du stänga av hela den här funktionen genom att ändra värdet för EnableResourceMonitoring till false. Men det är förståss ingen bra i ett skarpt system. Någon har ju trots allt lagt ner en del tid för att skriva den här koden...

Om du vill lära dig mer om Back Pressure finns det en bra artikel här: http://technet.microsoft.com/en-us/library/03003544-e802-4988-9427-5fc4da64dcb8.aspx

Gonatt från ett iskallt Umeå!

Inga kommentarer: