Při plánování úkolů je úkolem plánování simulovat zahájení HTTP požadavku a zjistit, že když je více úkolů, plánování úkolů působí jako falešná smrt.
Maximální výchozí počet požadovaných připojení na běžném systému Windows je 2, zatímco na serverovém operačním systému je výchozí 10. Pokud tento limit souběžného připojení neupravíte,Pak je počet http připojení, která může klient současně navázat, pouze 2 nebo 10。
System.Net.ServicePointManager.DefaultConnectionLimit Toto je maximální počet připojení, které mohou získat aktuální výchozí nastavení, jak je znázorněno na obrázku níže:
Existuje výchozí limit souběžnosti pro HttpClient?
Před .Net 4.0 byly Http operace spoléhány na Http Request. Ve výchozím nastavení má velmi konzervativní maximum 2 limitů souběžnosti pro stejný web, což často způsobuje, že HttpWebRequests nedosahuje ideální rychlosti ve výchozím nastavení (myslím, že tato strategie frustruje mnoho programátorů) a hodnota App.config nebo ServicePointManager.DefaultConnectionLimit musí být upravena.
MS zavedl třídu HttpClient v .Net 4.5 pro zpracování operací Http a myslel jsem, že HttpClient a HttpWebRequest dodržují stejnou politiku. Dnes, když jsem psal vícevláknový program ke stahování, jsem použil 10 souběžných připojení a zjistil jsem, že HttpClient nemá ve výchozím nastavení limit počtu souběžných uživatelů.
Nejdřív jsem si to myslel. Net 4.5 tento limit souběžnosti odstranil (koneckonců, dnes už ho prakticky nikdo nedodržuje), a pak přepsal relevantní kód pomocí WebRequest, kde zjistil, že stále jde o limit 2 souběžnosti a hodnota ServicePointManager.DefaultConnectionLimit byla také 2. To znamená, že HttpClient není řízen politikou souběžnosti HttpWebRequest a neexistuje žádný systémový limit souběžnosti.
Navíc jsem při testování zjistil, že HttpWebRequest nevyžaduje maximálně 2 souběžnosti pro všechny adresy. NapříkladPro lokální HTTP připojení neexistuje žádný limit souběžnosti (http://localhost/*).。
C# vícevláknové volání prostředí na HttpWebRequest limit souběžného spojení
.net's HttpWebRequest nebo WebClient má v případě vícevláknového režimu limit souběžného připojení, který je ve výchozím nastavení 2 na desktopových operačních systémech jako Windows XP a Windows 7 a ve výchozím nastavení 10 na serverových operačních systémech. Pokud tento limit souběžného připojení nezměníte, počet HTTP spojení, které může klient najednou vytvořit, je pouze 2 nebo 10. U některých aplikací, jako jsou prohlížeče nebo pavouky, je počet 2 nebo 10 souběžnosti příliš malý a výrazně ovlivňuje výkon aplikace. Tento limit souběžného připojení je způsoben standardy HTTP 1.0 a HTTP 1.1, které určují maximálně 2 současná připojení. Nicméně běžné prohlížeče toto pravidlo již nedodržují, ale .NET framework toto pravidlo stále standardně dodržuje.
Mnoho článků uvádí, že asynchronní přístup k HttpWebRequest může zlepšit výkon při souběžném připojení, ale já jsem testoval, že pokud nezměníte výchozí počet souběžných připojení, výkon synchronního nebo asynchronního přístupu není dobrý.
Maximální počet souběžných připojení můžeme také nastavit v app.config následovně:
Referenční článek
Přihlášení k hypertextovému odkazu je viditelné.
Přihlášení k hypertextovému odkazu je viditelné.
|