16 CAsyncSockets bremsen system aus



  • Hallo an alle,

    ich habe eine Applikation die sich ueber 16 sockets zu anderen Rechnern
    verbindet, bzw. ständig versucht sich zu verbinden. Dabei habe ich einen
    seltsamen Effekt. Wenn alle 16 sockets ständig versuchen sich zu verbinden,
    aber keine Verbindung zustande kommt, dann werden Netzwerkzugriffe auf
    meinem PC (XP SP3) furchtbar langsam.

    Wenn ich in meiner Applikation nur eine Verbindung aktiviere, das Programm aber
    16 mal starte funktioniert alles einwandfrei. Auch auf einem Windows 7
    Rechner gab's keine Probleme. Dieser hat allerdings auch eine schnellere
    Hardware.

    Zur Software: Ich habe eine Klasse von CAsyncSocket abgeleitet und versuche
    von dieser aus die Verbindung aufzubauen. D.h. in meinem Prozess werden
    16 Instanzen dieser Klasse angelegt. Jede Instanz vesucht sich zu verbinden.
    Es handelt sich dabei um eine TCP Verbindung.

    Hat jmd von euch schon ein ähnliches Verhalten festgestellt bzw. hat eine Lösung ?

    Viele Grüße
    Ulli



  • Das mit 1 Verbindung und Programm 16x starten is komisch - das müsste mMn. genau so bremsen.

    Davon abgesehen deutet alles auf das half-open-connection Limit hin das mit Windows XP SP2 eingeführt wurde.
    Guck mal ob du im Event Log Einträge mit Event ID 4226 hast. Falls es daran liegt kannst du deine tcpip.sys patchen (http://half-open.com/).
    Bzw. du könntest vorher mal probieren alle Windows Updates zu installieren - ich meine nämlich mich zu erinnern dass das Limit auch mit irgend einem Windows Update bei XP wieder entfernt wurde -- kann aber auch sein dass ich mich täusche.
    Falls nicht musst du eben patchen. Den Patch musst du dann auch nach jedem Update wiederholen wo die tcpip.sys ausgetauscht wurde - nach dem für XP aber kaum noch Updates daherkommen wird das vermutlich nicht oft passieren.

    Mit Vista SP2 wurde das Limit wieder abgeschafft, Windows 7 hatte es nie.



  • Hallo Hustbaer,

    dein Tip war ein Volltreffer 👍 👍 👍
    Es ist genau so wie du's beschrieben hast. Im log ist
    das Event mit ID 4226 aufgefuehrt. Wenn ich das System
    mit dem Progrämmchen "verbiege" oder nur 9 sockets öffne
    funktioniert alles einwandfrei.
    Das Problem habe ich zwar immernoch, jetzt muss ich nach
    einer Lösung suchen, aber die Ursache zu kennen ist doch
    schon viel Wert!
    Vielen Dank nochmals für den wertvollen Tip ! 🙂

    Gruß Ulli



  • Die Lösung ist deine tcpip.sys zu patchen, hab ich doch schon geschrieben.
    Dazu gibt's etliche Programme die im Netz rumschwirren, eines hab ich ja sogar verlinkt:

    http://half-open.com/download_en.htm

    Andere Lösung kenne ich keine. Ausser natürlich dem Programm beizubringen dass es nicht so viele halb-offenen Connections haben darf. Was manchmal aber nicht wirklich praktikabel ist.


Log in to reply