Veicot uzdevumu plānošanu, plānošanas uzdevums ir simulēt HTTP pieprasījuma iniciēšanu un konstatēt, ka, ja ir vairāk uzdevumu, uzdevumu plānošana šķiet kā viltus nāve.
Maksimālais noklusējuma pieprasīto savienojumu skaits parastā Windows sistēmā ir 2, un servera operētājsistēmā tas ir 10. Ja nemodificējat šo vienlaicīgā savienojuma ierobežojumu, veiciet tālāk norādītās darbības.Tad http savienojumu skaits, ko klients var veikt vienlaicīgi, ir tikai 2 vai 10。
System.Net.ServicePointManager.DefaultConnectionLimit Šis ir maksimālais savienojumu skaits, kas var iegūt pašreizējo noklusējuma iestatījumu, kā parādīts attēlā zemāk:
Vai HttpClient ir noklusējuma vienlaicīguma ierobežojums?
Pirms .Net 4.0 Http operācijas paļāvās uz HttpWebRequest. Pēc noklusējuma tai ir ļoti konservatīvs maksimālais 2 vienlaicīguma ierobežojumi vienai un tai pašai vietnei, kas bieži izraisa HttpWebRequests nesaņem ideālu ātrumu pēc noklusējuma (es domāju, ka šī stratēģija neapmierina daudzus programmētājus), un App.config vai ServicePointManager.DefaultConnectionLimit vērtība ir jāmaina.
MS ieviesa HttpClient klasi .Net 4.5, lai apstrādātu Http operācijas, un es domāju, ka HttpClient un HttpWebRequest ievēroja to pašu politiku. Šodien, rakstot vairāku pavedienu lejupielādes programmu, es izmantoju 10 vienlaicīgus savienojumus un atklāju, ka HttpClient pēc noklusējuma nav vienlaicīga skaita ierobežojuma.
Sākumā es domāju, ka tā ir. Net 4.5 noņēma šo vienlaicīguma ierobežojumu (galu galā, būtībā neviens tagad neievēro šo standartu), un pēc tam pārrakstīja attiecīgo kodu ar WebRequest un atklāja, ka tas joprojām bija 2 vienlaicīguma ierobežojums, un ServicePointManager.DefaultConnectionLimit vērtība bija arī 2. Tas nozīmē, ka HttpClient nekontrolē HttpWebRequest vienlaicīguma politika, un nav sistēmas līmeņa vienlaicīguma ierobežojuma.
Turklāt testēšanas laikā es atklāju, ka HttpWebRequest nenodrošina maksimālo 2 vienlaicīgumu visām adresēm. PiemēramLokālajiem HTTP adrešu savienojumiem (http://localhost/*) nav vienlaicīguma ierobežojuma.。
C# daudzpavedienu vides izsaukumi uz HttpWebRequest vienlaicīgā savienojuma ierobežojumu
.net HttpWebRequest vai WebClient ir vienlaicīga savienojuma ierobežojums vairāku pavedienu gadījumā, kas pēc noklusējuma ir 2 darbvirsmas operētājsistēmās, piemēram, Windows XP un Windows 7, un 10 pēc noklusējuma serveru operētājsistēmās. Ja nemaināt šo vienlaicīgo savienojumu ierobežojumu, HTTP savienojumu skaits, ko klients var izveidot vienlaikus, ir tikai 2 vai 10. Dažām lietojumprogrammām, piemēram, pārlūkprogrammām vai zirnekļiem, 2 vai 10 vienlaicīgumu skaits ir pārāk mazs un ievērojami ietekmē lietojumprogrammas veiktspēju. Šis vienlaicīgā savienojuma ierobežojums ir saistīts ar HTTP 1.0 un HTTP 1.1 standartiem, kas norāda ne vairāk kā 2 vienlaicīgus savienojumus. Tomēr galvenās pārlūkprogrammas vairs neievēro šo noteikumu, bet .NET sistēma joprojām ievēro šo noteikumu pēc noklusējuma.
Daudzos rakstos teikts, ka asinhrona piekļuve HttpWebRequest var uzlabot vienlaicīgu veiktspēju, taču esmu pārbaudījis, ka, nemainot vienlaicīgu savienojumu noklusējuma skaitu, sinhronās vai asinhronās piekļuves veiktspēja nav laba.
Mēs varam arī iestatīt maksimālo vienlaicīgo savienojumu skaitu app.config šādi:
Atsauces raksts
Hipersaites pieteikšanās ir redzama.
Hipersaites pieteikšanās ir redzama.
|