Pri plánovaní úloh je úlohou plánovania simulovať iniciovanie HTTP požiadavky a zistiť, že keď je úloh viac, plánovanie úloh pôsobí ako falošná smrť.
Maximálny predvolený počet požadovaných pripojení na bežnom Windows systéme je 2 a na serverovom operačnom systéme je predvolene 10. Ak tento limit súbežného pripojenia neupravíte,Potom je počet http pripojení, ktoré môže klient vytvoriť naraz, len 2 alebo 10。
System.Net.ServicePointManager.DefaultConnectionLimit Toto je maximálny počet pripojení, ktoré môžu získať aktuálne predvolené nastavenie, ako je znázornené na obrázku nižšie:
Existuje predvolený limit súbežnosti pre HttpClient?
Pred .Net 4.0 sa Http operácie spoliehali na HttpRequest. Štandardne má veľmi konzervatívne maximum 2 limity súbežnosti pre tú istú stránku, čo často spôsobuje, že HttpWebRequests nedosahuje ideálnu rýchlosť ako predvolene (táto stratégia frustruje mnohých programátorov), a hodnota App.config alebo ServicePointManager.DefaultConnectionLimit musí byť upravená.
MS zaviedol triedu HttpClient v .Net 4.5 na spracovanie Http operácií a myslel som si, že HttpClient a HttpWebRequest nasledujú rovnakú politiku. Dnes, keď som písal viacvláknový sťahovací program, som použil 10 súbežných pripojení a zistil som, že HttpClient nemá štandardný limit súbežného počtu používateľov.
Najprv som si myslel, že áno. Net 4.5 tento limit súbežnosti odstránil (veď dnes už tento štandard prakticky nikto nedodržiava), potom prepísal príslušný kód pomocou WebRequest a zistil, že stále ide o limit 2 súbežnosti a hodnota ServicePointManager.DefaultConnectionLimit bola tiež 2. To znamená, že HttpClient nie je riadený politikou súbežnosti HttpWebRequest a neexistuje žiadny systémový limit súbežnosti.
Okrem toho som počas testovania zistil, že HttpWebRequest nevyžaduje maximálne 2 súbežnosti pre všetky adresy. NapríkladPre lokálne HTTP adresy neexistuje limit súbežnosti (http://localhost/*).。
C# viacvláknové volania prostredia na HttpWebRequest limit súbežného pripojenia
.netov HttpWebRequest alebo WebClient má v prípade multithreadingu limit súbežného pripojenia, ktorý je predvolene 2 na desktopových operačných systémoch ako Windows XP a Windows 7 a predvolene 10 na serverových operačných systémoch. Ak tento limit súbežného pripojenia nezmeníte, počet HTTP spojení, ktoré môže klient naraz vytvoriť, je len 2 alebo 10. Pre niektoré aplikácie, ako sú prehliadače alebo pavúky, je počet 2 alebo 10 súbežnosti príliš malý a výrazne ovplyvňuje výkon aplikácie. Tento limit súbežného pripojenia je spôsobený štandardmi HTTP 1.0 a HTTP 1.1, ktoré špecifikujú maximálne 2 súbežné spojenia. Avšak bežné prehliadače už toto pravidlo nedodržiavajú, no .NET framework ho stále štandardne dodržiava.
Mnohé články uvádzajú, že asynchrónny prístup k HttpWebRequest môže zlepšiť výkon súbežného pripojenia, ale ja som testoval, že ak nezmeníte predvolený počet súbežných pripojení, výkon synchronného alebo asynchrónneho prístupu nie je dobrý.
Maximálny počet súbežných spojení môžeme tiež nastaviť v app.config nasledovne:
Referenčný článok
Prihlásenie na hypertextový odkaz je viditeľné.
Prihlásenie na hypertextový odkaz je viditeľné.
|