var options = new ParallelOptions
{
    MaxDegreeOfParallelism = 8,
    CancellationToken = cancellationToken
};
await Parallel.ForEachAsync(endpoints, options,
    async (endpoint, token) =>
    {
        var result = await ProbeAsync(endpoint, target, token);
        observations.Add(result);
    });

Izmantojiet ierobežotu darbinieku kopu, nevis palaidiet atsevišķu uzdevumu katram galapunktam. Pārbaudot atļautus publiskus mērķus, bezmaksas starpniekserveru saraksts nodrošina kandidātu rindas; veidojot zondi, saglabājiet katra ieraksta protokolu. Šis .NET plānošanas fragments pieņem starpniekserveri apzinošu ProbeAsync un pavedieniem drošu observations savācēju. Astoņi ir ilustratīva robeža, nevis izmērīts optimums. Zondei joprojām vajadzīgi mēģinājuma limiti un visa darba atcelšana.

Saglabājiet katru pabeigto rezultātu kopā ar tā ievadi, pat ja pabeigšanas secība atšķiras. Pierakstiet protokolu, galapunktu, mērķi, metodi, pagājušo laiku un iznākumu. Savienojuma kļūme, starpniekservera pieteikšanās atteikums, atteikts CONNECT un no vietnes saņemta atbilde ir dažādi novērojumi.

Atvērts TCP ports nepierāda sarunas ar starpniekserveri. Starpniekservera adreses iegūšana kā vietnes arī atšķiras no tās izmantošanas mērķa pieprasījumam.

Izvēlieties mērķi un metodi atbilstoši vajadzīgajai spējai. HEAD var ietaupīt pamatteksta datplūsmu, bet nepierāda, ka GET atgriež lietderīgu saturu; vietne var noraidīt vienu un atļaut otru. HTTPS pievieno CONNECT un galamērķa TLS, kuru vienkāršā HTTP nav. Izejas adrese ir vēl viens novērojums galamērķa pusē, atdalīts no konfigurētās ieejas.

Ierobežots darbs neļauj pārbaudītājam izsmelt savus ligzdas, atmiņu vai plānotāju, pirms tas var novērtēt maršrutu. Pakāpenisks rezultāts joprojām ir noderīgs atlases politikai, neizliekoties, ka viens veiksmīgs galamērķis padara galapunktu universāli labu.

Saistītie raksti