Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Maximale Anzahl gleichzeitiger Verbindungen (https://www.delphipraxis.net/208835-maximale-anzahl-gleichzeitiger-verbindungen.html)

greenmile 19. Sep 2021 16:59

Maximale Anzahl gleichzeitiger Verbindungen
 
Hallo,

(m)ein Programm lädt mehrere Bild-Dateien von einem Server, dafür laufen einige Threads zur selben Zeit. Das Problem ist, dass anscheinend nur 2 zur selben Zeit laufen und die restlichen warten. Ein wenig Google ergab dann, dass die maximale Anzahl gleichzetiger Verbindungen zum selben Server auf 2 limitiert ist, außer man setzt in der Registry den Wert unter "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Interne t Explorer\Main\FeatureControl\FEATURE_MAXCONNECTION SPERSERVER" hoch. Das Problem ist: Das bringt nix. Egal ob ich dort "iexplorer.exe" noch den Namen meiner EXE eintrage, es werden nicht mehr. Ich muss leider die Funktionen der WinINet verwendet. Alternativ habe ich schon (erfolglos) versucht:

Code:
InternetSetOption(nil, INTERNET_OPTION_MAX_CONNS_PER_SERVER, @MaxConnections, SizeOf(MaxConnections));
InternetSetOption(nil, INTERNET_OPTION_MAX_CONNS_PER_1_0_SERVER, @MaxConnections, SizeOf(MaxConnections));
Das scheint aber nur bis IE7 zu funktionieren. Hat noch jemand eine Idee?

himitsu 19. Sep 2021 17:12

AW: Maximale Anzahl gleichzeitiger Verbindungen
 
Schonmal überlegt, dass diese Begrenzung auch auf der anderen Seite vorkommen kann und der Server das Limit vorgibt?

Papaschlumpf73 19. Sep 2021 17:14

AW: Maximale Anzahl gleichzeitiger Verbindungen
 
Probiere mal bitte diese Registry-Einstellungen für 20 gleichzeitige Verbindungen - hat früher immer funktioniert.

Code:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
"MaxConnectionsPer1_0Server"=dword:00000020
"MaxConnectionsPerServer"=dword:00000020

greenmile 19. Sep 2021 17:14

AW: Maximale Anzahl gleichzeitiger Verbindungen
 
Zitat:

Zitat von himitsu (Beitrag 1495116)
Schonmal überlegt, dass diese Begrenzung auch auf der anderen Seite vorkommen kann und der Server das Limit vorgibt?

Da habe ich auch schon geschaut, bin allerdings nicht so ganz schlau geworden, wo ich das im Apache einstellen kann. Habe auf "MaxConnectionsPerChild" getippt und da steht 0 ("which implies no maximum connections per child").

[Code]
StartServers 250
MinSpareServers 100
MaxSpareServers 150
MaxRequestWorkers 512
ServerLimit 512
MaxConnectionsPerChild 0
[Code]

hast du noch eine Idee?

greenmile 19. Sep 2021 17:16

AW: Maximale Anzahl gleichzeitiger Verbindungen
 
Zitat:

Zitat von Papaschlumpf73 (Beitrag 1495117)
Probiere mal bitte diese Registry-Einstellungen für 20 gleichzeitige Verbindungen - hat früher immer funktioniert.

Code:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
"MaxConnectionsPer1_0Server"=dword:00000020
"MaxConnectionsPerServer"=dword:00000020

Hat nix gebracht.

mmw 19. Sep 2021 18:46

AW: Maximale Anzahl gleichzeitiger Verbindungen
 
hallo,

vielleicht hier

http://www.winfaq.de/faq_html/Conten...?h=tip0405.htm

Gruß

Sinspin 20. Sep 2021 07:47

AW: Maximale Anzahl gleichzeitiger Verbindungen
 
Im Regelfall machen die Webserver das. Wenn es dein eigener Server ist kannst du es einstellen. Sonst eher nicht.
Mein FTP Server (bei Hetzner) erlaubt maximal 10 gleichzeitige Verbindungen. Ein FTP Server von DemoScene.org nur zwei.

Bei Webhostern war es lange Zeit üblich 2 gleichzeitige Verbindungen zu erlauben. Heutzutage sind es meißt 4.

Client / PC seitig muss man da schon seit vielen Jahren nichts mehr einstellen. Unter XP war da mal was. Aber das ist ja lange her.

greenmile 20. Sep 2021 08:07

AW: Maximale Anzahl gleichzeitiger Verbindungen
 
InternetQueryOption(nil, INTERNET_OPTION_MAX_CONNS_PER_1_0_SERVER, @dwMaxHttp10, dwSize)
InternetQueryOption(nil, INTERNET_OPTION_MAX_CONNS_PER_SERVER, @dwMaxHttp11, dwSize)

Gibt bei mir bei auf einem 'normalen' Windows 4 (INTERNET_OPTION_MAX_CONNS_PER_1_0_SERVER) bzw 2 (INTERNET_OPTION_MAX_CONNS_PER_SERVER) zurück.

Kann man denn irgendwie in Erfahrung bringen, ob die App für eine Verbindung warten müsste, weil gerade alles voll ist?

Kann das zwar (anscheinend) temporär erhöhen, mir wäre es aber lieber wenn ich weiß, ob die Schlange gerade voll ist, dann kann ich gemütlich warten.

Code:
  dwSize := SizeOf(dwMaxHttp10);
  InternetQueryOption(nil, INTERNET_OPTION_MAX_CONNS_PER_1_0_SERVER, @dwMaxHttp10, dwSize);
  If (dwMaxHttp10<10) then begin
    dwMaxHttp10 := 10;
    InternetSetOption(nil, INTERNET_OPTION_MAX_CONNS_PER_1_0_SERVER, @dwMaxHttp10, dwSize);
  end;

  dwSize := SizeOf(dwMaxHttp11);
  InternetQueryOption(nil, INTERNET_OPTION_MAX_CONNS_PER_SERVER, @dwMaxHttp11, dwSize);
  If (dwMaxHttp11<10) then begin
    dwMaxHttp11 := 10;
    InternetSetOption(nil, INTERNET_OPTION_MAX_CONNS_PER_SERVER, @dwMaxHttp11, dwSize);
  end;

greenmile 20. Sep 2021 10:41

AW: Maximale Anzahl gleichzeitiger Verbindungen
 
Ich denke, ich habe den Fehler gefunden. Wenn die EXE in "FEATURE_BROWSER_EMULATION" gelistet ist, muss hier ein Eintrag einfolgen:

HKCU\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULA TION\name-der.exe DWord 11000
HKCU\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_MAXCONNECTION SPERSERVER\name-der.exe DWord 10
HKLM\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_MAXCONNECTION SPERSERVER\name-der.exe DWord 10

Ansonsten hier:

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Int ernet Settings\MaxConnectionsPerServer DWord 10
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Int ernet Settings\MaxConnectionsPer1_0Server DWord 10

Entsprechend geben auch diese Funktionen den hinterlegten Wert zurück:

Code:
InternetQueryOption(nil, INTERNET_OPTION_MAX_CONNS_PER_1_0_SERVER, @dwMaxHttp10, dwSize)
InternetQueryOption(nil, INTERNET_OPTION_MAX_CONNS_PER_SERVER, @dwMaxHttp11, dwSize)
Zusätzlich mache ich das dann noch per Software, scheint aber nicht zu greifen, muss ich noch testen:

Code:
        dwSize := SizeOf(dwMaxHttp10);
        InternetQueryOption(nil, INTERNET_OPTION_MAX_CONNS_PER_1_0_SERVER, @dwMaxHttp10, dwSize);
        If (dwMaxHttp10<10) then begin
          dwMaxHttp10 := 10;
          InternetSetOption(nil, INTERNET_OPTION_MAX_CONNS_PER_1_0_SERVER, @dwMaxHttp10, dwSize);
        end;

        dwSize := SizeOf(dwMaxHttp11);
        InternetQueryOption(nil, INTERNET_OPTION_MAX_CONNS_PER_SERVER, @dwMaxHttp11, dwSize);
        If (dwMaxHttp11<10) then begin
          dwMaxHttp11 := 10;
          InternetSetOption(nil, INTERNET_OPTION_MAX_CONNS_PER_SERVER, @dwMaxHttp11, dwSize);
        end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz