2017-02-10 27 views
12

Anlayışım, bir istek işlenmeye hazır olduğunda ASP.NET Çekirdek katman yazılımının çalıştırılmasıdır. Ancak uygulama yük altında ise ve ASP.NET Çekirdeği geldikleri gibi tüm istekleri işleme koyamazlar, bir yere "sıraya" konurlar? Bunun Kestrel'in içinde yönetilen bir kuyruk olup olmadığını veya libuv ile ilgili bir şey olup olmadığını bilmiyorum.Kestrel/ASP.NET Çekirdeğinde istek kuyruğunda harcanan süreyi elde etmenin bir yolu var mı?

Bu sırada belirli bir isteğin ne kadar süreyle harcanacağını bilmek isterim. HttpContext'te bana bunu söyleyebilecek bir şey var mı? peşin

+0

İlgi dışı, neden sıra zaman önemlidir? – DavidG

+0

Çünkü günlükleri başka bir şekilde hızlı bir şekilde bildiren servisime bir istekte bulunmak için harcanan kayıp zamana atıfta bulunmak istiyorum. Örneğin, tarayıcı istemcim yanıt almak için 2 saniye sürdüğünü görebiliyordu, ancak ara katman yazılımındaki tüm günlükler toplam 200 ms rapor ediyor. 1.8'lerin nerede olduğuna dair kanıt istiyorum. İlginiz için teşekkürler :) – ChrisBellew

+0

Ve kayıp zaman istek sıraya neden olduğunu düşünür? – DavidG

cevap

4

yılında

sayesinde bu soru o kadar kolay değil.

Her zaman izlemek istiyorsanız, bir çok adım atmanız gerekir. Başlangıçta, isteklere benzersiz bir damga veya keneler ekleyin, böylece bunları tek tek tanımlayabilirsiniz. İkincisi, isteklerinizi yakalayan ve zamanları kaydeden bir işleyici oluşturun. Üçüncü olarak, her istekle ilgili yönteme bir günlük noktası ekleyin. Dördüncü - bu bir sürpriz olacak - bu süreyi azaltmak için IIS'nin iş parçacığı, paralel istekler, oturum işlemleri vb. Ile ilgili yapılandırmasını beklemek için büyük bir şey yapamazsınız. Beşinci - tarayıcınız 2000 ms ölçerse, sunucunuz 200 ms, .NET çekirdeği değil, kodunuz/mimariniz/config. Kötü haberler için üzgünüm.

Saati ölçmek için System.Diagnostics.Stopwatch sınıfını kullanın.