Event 9646

Oftmals ist es ein Programm, welches die CDO.DLL (MAPI/CDO) nutzt. Beachten Sie, dass hier die aktuellste Version eingesetzt werden sollte. Gerade das Update Okt 2010 hat hier noch Korrekturen gebracht.

Lifting the 500 Folder Limit in Outlook
https://blog-insider.office.com/2019/06/04/lifting-the-500-folder-limit-in-outlook/

Seit Exchange 2003 kann es sein, dass manchmal ein neuer Eintrag im Eventlog ihres Servers auftaucht.

Ereignistyp: Fehler 
Ereignisquelle: MSExchangeIS 
Ereigniskategorie: Allgemein 
Ereigniskennung: 9646 
Benutzer: Nicht zutreffend 
Computer: SRV01 
Beschreibung: 
Die MAPI-Sitzung "/o=MSXFAQ/ou=Erste administrative 
Gruppe/cn=Recipients/cn=User1" hat die maximal zulässige Anzahl von 250 Objekten vom Typ "objtFolder" überschritten

oder

Ereignistyp: Fehler 
Ereignisquelle: MSExchangeIS 
Ereigniskategorie: Allgemein 
Ereigniskennung: 9646 
Datum: 27.05.2005 
Zeit: 09:06:23 
Benutzer: Nicht zutreffend 
Computer: SRV01 
Beschreibung: 
Die MAPI-Sitzung "/o=MSXFAQ/ou=Erste administrative 
Gruppe/cn=Recipients/cn=User1" hat die maximal zulässige Anzahl von 32 Objekten vom Typ "session" überschritten.

Diese Fehlermeldung ist als Warnung und Information zu verstehen, dass der angegebene Client aus Sicht von Exchange zu viele Elemente gleichzeitig geöffnet hat.

Natürlich ist es erst mal Aufgabe von Exchange, für die Anwender alle Dienste möglichst zügig und zuverlässig bereit zu stellen. Dafür muss Exchange aber auch jedes Objekte, welches ein Anwender anfordert aus der Datenbank suchen und vorhalten. Hierfür reserviert Exchange etwas Speicher. Damit wäre es für einen Angreifer natürlich möglich, z.B. einfach 10000 Mails gleichzeitig zu öffnen um den Exchange Server damit etwas ins Schwitzen zu bringen. Seit Exchange 2003 schützt sich Exchange damit, dass der Anwender nicht mehr als eine konfigurierte Anzahl von Objekten gleichzeitig geöffnet haben darf. Die Standardeinstellung besagt, dass eine Verbindung maximal 100 Ordner und 250 Mailelemente gleichzeitig offen halten darf. Versucht der Client mehr zu öffnen, quittiert der Server das dem Client mit einem Fehler der dann darauf reagiert.

Ursachenforschung

Nun stellt Sie die Frage, wie es denn dazu kommen kann, dass eine Sitzung wirklich 250 "Mails" gleichzeitig offen hat. Eine solche Informationsflut kann ja niemand mehr auf dem Bildschirm wirklich darstellen. Aber 250 Mail Elemente bedeutet nicht, dass ein Anwender mit Outlook auch 250 Fenster geöffnet hat, sondern dass Outlook oder jede andere Anwendung eben so viele Elemente anliest und dafür gibt es mehrere Gründe:

  • Ansicht auf den eigenen Kalender
    Wenn Sie in ihren "Kalender" schauen, dann "liest" Outlook auch im Kalender all die Elemente an, die er anzeigen muss. d.h. wenn Sie die Monatsansicht mit 30 Tagen und 3 Termine je Tag haben, dann sind Sie schon bei 90 geöffneten Mailobjekten. Outlook muss ja die Terminbeschreibung "lesen".
    Weil dass aber schon länger so ist, hat Outlook schon sehr früh speziell den Kalender in eine OST-Datei repliziert und von dort geöffnet (Auch ohne explizit aktivierten Offline Mode), so dass das heute sehr selbst passiert.
  • Terminplanung und fremde Kalender
    Das wird um so deutlicher, wenn z.B.: ein Sekretariat mehrere Terminkalender verschiedener Leute in einer Vorschau anzeigt oder einen Termin plant und in den Frei/Belegt Seiten auch die Termindetails angezeigt werden.
  • Suche durch den Client
    Aber was natürlich weiter möglich ist, sind Client, die z.B.: nach Mails suchen und dazu nicht die erweiterte Suche mit dem Exchange Index oder Sharepoint nutzen oder die ihr Postfach replizieren. Das "öffnet" natürlich auch viele Mails auf einmal. Das kann auch passieren, wenn Sie z.B. Desktop Suchmaschinen a la Lookout oder die MSN Suche einsetzen.
  • Eigene Programme
    Manchmal ist es aber auch einfach eine selbst entwickelte Anwendung, die über Outlook auf Inhalte zugreift und die verwendeten Puffer nicht wieder ordentlich frei gibt.
  • Synchronisation
    Auch eine Synchronisation z.B.: mit einen mobilen Gerät kann bei unsauberer Programmierung diese Meldung verursachen. (PALM, Mobiltelefon, o.ä.)
  • Netzwerkfehler
    Manchmal ist es auch einfach das Netzwerk, dass weitere Sitzungen aufgebaut werden. (Siehe auch KB898060)
  • SQL-Mail
    Auch der SQL-Server kann per MAPI Mails senden. Dabei startet jeder Prozess eine eigene Session, so dass die 32 Sessions schnell erreicht sein können.
  • WAN Accelerator
    Es gibt mitterlweile Router und Geräte, die WAN-Traffic minimieren, indem Sie die Anfragen abfangen, weiter Cachen und damit sogar Dateizugriffe auf IP-Level optimiere. Siehe auch Troubleshooting Outlook RPC dialog boxes - revisited http://blogs.technet.com/b/exchange/archive/2008/05/02/3405434.aspx.

Insofern wenn es sonst keine Probleme gibt kann man diese Meldung ignorieren und mal beobachten, was der Anwender denn da mit Exchange macht. Abhilfe könnte Outlook 2003 mit Cached Mode schaffen, welches die meisten Anfragen dann lokal beantwortet.

Suche per PowerShell

Sie können natürlich mit Tools wie EventCombMT auch mehrere Server per GUI durchsuchen. Ich bin aber ein Freund der Powershell und seit Get-WinEvent ist das sehr einfach möglich. Hier ein Beispiel:

Get-ExchangeServer `
| %{
   get-winevent `
      -ComputerName $_.name `
       -FilterHashTable @{LogName = "Application"; ID = 9646; Providername="MSExchangeIS"}
   }

Oder etwas besser aufbereitet

$serverlist = get-exchangeserver | select name -expandproperty name
Invoke-Command `
   -ScriptBlock {get-winevent -FilterHashTable @{LogName = "Application"; ID = 9646; Providername="MSExchangeIS"}} `
   -ComputerName $serverlist  `
| %{$_.message -match "Mapi Session.*cn=(.*)"| out-null; $matches[1]} `
| group -noelement `
| ft -autosize

So erhalten Sie von allen Exchange Servern in ihrer Topologie alle entsprechenden Events. Sie können natürlich mit Get-WinEvent noch weiter filtern (z.B. Start/Endezeit) und die Ausgaben weiter verarbeiten.

Anpassen der Limits

Natürlich sind diese Grenzwerte von Microsoft nicht willkürlich gewählt worden, sondern dürften in den meisten Fällen sowieso nicht erreicht werden. für die Anwender oder Prozesse, die davon jedoch betroffen sind, ist es zumindest störend und bitten um Abhilfen. Sie können die Grenzwerte natürlich auch anpassen. Trotzdem sollten Sie eher die Ursache ausfindig machen. Vielleicht ist es ja doch ein Mailwurm oder eine andere Software, die so viel Last macht, dass die Leistung ihres Exchange Servers für andere Anwender beeinträchtigt ist. Dann wäre die Änderung der Grenzen gerade kontraproduktiv.

Die Anpassung der Grenzen erfolgt in der Registrierung:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\ParametersSystem]
"Maximum Allowed Sessions Per User"=dword:00000020

Die Werte sind auch in folgendem KB-Artikel noch einmal genauer beschrieben.

Sie können in einem Unterschlüssel damit noch feiner die Grenzen für die verschiedenen Objekte steuern. Hier eine REG-Datei, die die Standardwerte (Exchange 2003 SP1) einträgt. ändern Sie die Werte bitte nicht ohne genaue Analyse vorher ab. EXMON und andere Werkzeuge können ihnen dabei helfen, die Ursache zu ermitteln, welcher Client an die Grenzen stößt und warum das so ist.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\ParametersSystem]
"Maximum Allowed Sessions Per User"=dword:00000020

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\ParametersSystem\MaxObjsPerMapiSession]
"objtMessage"=dword:000000FA
"objtFolder"=dword:000001F4
"objtAttachment"=dword:000001F4
"objtFolderView"=dword:000001F4
"objtMessageView"=dword:000001F4
"objtAttachView"=dword:000001F4
"objtStream"=dword:000000FA
"objtACLView"=dword:0000032
"objtRulesView"=dword:0000032
"objtFXSrcStrm"=dword:0000032
"objtFXDstStrm"=dword:0000032
"objtCStream"=dword:0000032
"objtNotify"=dword:0007A120

Weitere Links