PRB: "WSAEADDRESSINUSE" chybová zpráva při pokusu o připojení prostřednictvím portu anonymní po zvýšení limitu IMAP

Příznaky

Při zvýšení limitu připojení IMAP a potom se pokusí připojit k serveru IMAP z poštovní služby Microsoft TV konfigurován pomocí velmi nízké nastavení MailboxCacheTTL zobrazí chybová zpráva "WSAEADDRESSINUSE" (kód chyby: 10048).

Příčina

K tomuto chování dochází z důvodu kombinace následujících položek:
  • Ve výchozím nastavení systém Windows 2000 má omezený prostor pro anonymní porty. Tento prostor je omezen více nízké MailboxCacheTTL , který je nakonfigurován pro poštovní služby Microsoft TV. (Anonymní porty jsou dočasné porty, které jsou přiřazeny systémem počítače sady protokolů IP, anonymní porty jsou přiřazeny z určeného rozsahu portů. Pouze porty 1024-5000 slouží v systému Windows 2000.)
  • Možnost SO_REUSEADDR na do zásuvek není zapnuta, takže do zásuvek nelze znovu použít ihned po zavřít. Do zásuvek musí zůstat vyhrazena ve stavu TIME_WAIT čtyři minuty. Pokud nastavíte možnost SO_REUSEADDR , umožňuje systému Windows více vazby k naslouchání soketu.
Rozsah portů anonymní (dočasných portů) omezuje maximální počet připojení z jednoho počítače do určité služby ve vzdáleném počítači. Protokol TCP/IP používá připojení 4-n-tice (IP serveru, port serveru, IP klienta a port klienta) rozlišit připojení; Pokud je rozsah portů anonymní pouze 4000 porty široké (přibližně), může být pouze 4000 jedinečné připojení z klientského počítače k vzdálené služby najednou.


Po ukončení připojení, dočasných portů je k dispozici pro opakované použití, ačkoli většina hromádky IP nepoužívejte čísla portu, dokud použil celý fond dočasných portů. Proto pokud klientský program opět připojí, klient je přiřazeno číslo různých dočasných portů pro na straně klienta o nové připojení. Pro poštovní služby Microsoft TV velmi nízké nastavení MailboxCacheTTL aggravates situace, protože připojení IMAP zavřete a znovu otevřete často (na téměř každý požadavek).


Může zdát velký rozsah port 4000, ale je malá pro aktuální výpočetní požadavky uvažujete, že připojení TCP vyprší až ve stavu TIME_WAIT před dokončením ve skutečnosti. Například i když obě strany spojení správně uzavřete jejich konce připojení, z důvodu kontroly chyb protokolu TCP na každé straně musíte počkat, dokud ve stavu TIME_WAIT vypršela před připojení k prostředkům opravdu nevzniká žádná obtíž.


Ve stavu TIME_WAIT je dvakrát maximální životnosti segmentu (MSL). (Z tohoto důvodu ve stavu TIME_WAIT je známé také jako stav 2MSL.) Obvykle v závislosti na sady protokolů IP stavu TIME_WAIT je nakonfigurován celkové 240 sekund. Proto může mít pouze 4000 připojení za sekundu 240 okno a v praxi tyto 4000 připojení lze použít.

Řešení

Chcete-li tomuto chování zabránit, proveďte jednu z následujících akcí:
  • Zvýšíte rozsah portů, který se používá pro anonymní porty přibližně 20 000 portů (například) úpravou klíče registru MaxUserPort . Systém Windows používá konvenční BSD rozsahu od 1024 do 5000 pro jeho rozsah portů anonymní (dočasných). Můžete nastavit pouze horní mez rozsahu dočasných portů. Chcete-li změnit klíč registru MaxUserPort , postupujte takto:


    1. Spusťte Editor registru (Regedt32.exe).
    2. Vyhledejte v registru MaxUserPort klíč:


      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
    3. V nabídce Úpravy klepněte na příkaz Přidat hodnotua přidejte následující hodnotu registru:


      Název hodnoty: MaxUserPort
      Datový typ: REG_DWORD
      Hodnota: 65534 (např.)
      Platný rozsah: 5000-65534 (desetinné číslo)
      Výchozí hodnota: 0x1388 (5000 desítkově)
    4. Ukončete Editor registru.
    Popis: Tento parametr určuje číslo portu maximální, který se používá, když aplikace požaduje libovolný port k dispozici uživatele ze systému. Obvykle dočasný (to znamená, že krátkodobý) jsou přidělovány porty hodnoty 1024 až 5000 včetně.


    - nebo -
  • Změna časového limitu pro připojení z 240 sekund (výchozí) na libovolnou délku 30 sekund na 300 sekund. Pomocí parametru registru TcpTimedWaitDelay tuto hodnotu změnit. Chcete-li to provést, spusťte Editor registru (Regedt32.exe) vyhledejte následující klíč registru a poté změňte hodnotu:


    HKEY_LOCAL_MACHINE\System\CurrectControlSet\services\Tcpip\Parameters



    TcpTimedWaitDelay


    Klíč: Tcpip\Parameters

    Typ hodnoty: REG_DWORD-čas v sekundách

    Platný rozsah: 30-300 (desítkový formát)

    Výchozí hodnota: 0xF0 (240 desetinný)


    Popis: Tento parametr určuje dobu, po dobu, po kterou zůstane připojení při ukončování ve stavu TIME_WAIT po ukončení připojení. Pokud je připojení ve stavu TIME_WAIT, nemůže být znovu použity dvojice soketů. Další informace naleznete v dokumentu RFC 793.
Poznámka: Tento problém je provedena worse při velmi nízké nastavení MailboxCacheTTL . Pokud problém přetrvává po provedení změny registru popsané výše, zvýšíte změnou nastavení MailboxCacheTTL v souboru SiteConfig.cfg (konfigurační soubor pro instalaci serveru Microsoft) poštovní schránky TTL.

Další informace

Další informace o zvýšení výchozí rozsah portů anonymní získáte v následujících článcích znalostní báze společnosti Microsoft:

196271 Nepodařilo se připojit k portům TCP vyšším než 5000
149532 klienti systému Windows NT spustit mimo Porty
Vlastnosti

ID článku: 319502 - Poslední kontrola: 16. 1. 2017 - Revize: 1

Váš názor