2013-10-23 15 views
6

Tôi muốn đọc hiệu suất của loại bộ đếm hiệu suất "ASP.NET" của hiệu suất NextValue(). Tuy nhiên, các quầy của danh mục này luôn hiển thị 0, trong khi các quầy khác hoạt động như mong đợi.Bộ đếm hiệu năng ASP.NET luôn trả về 0

Bộ đếm "ASP.NET" trong perfmon.exe trên máy từ xa đang hoạt động tốt.

Các "ASP.NET" quầy trong perfmon.exe trên nhắm mục tiêu máy tính cục bộ của tôi máy từ xa cũng hiển thị 0.

var pc = new PerformanceCounter("ASP.NET", "Requests Current", "", "myRemoteMachine"); 
pc.NextValue(); // returns always 0 
pc.NextValue(); // returns always 0 

Bất kỳ ý tưởng? Quyền hoặc một số loại vấn đề tường lửa?

+0

[PerformanceCounter] (http://msdn.microsoft.com/library/system.diagnostics.performancecounter.aspx): "Để có được dữ liệu hiệu suất cho các quầy yêu cầu giá trị ban đầu hoặc trước đó để thực hiện tính toán cần thiết, gọi phương thức NextValue hai lần và sử dụng thông tin được trả lại khi ứng dụng của bạn yêu cầu. " - có lẽ điều đó sẽ thực hiện thủ thuật. – Corak

+0

Thật không may là không. Giá trị vẫn là 0. – Mrks83

Trả lời

1

Giải pháp là ngủ 1 giây giữa các cuộc gọi đến NextValue.

Trong VB:

Dim cpu As New PerformanceCounter("Processor", "% Processor Time", "_Total", "servername") 

cpu.NextValue() 

System.Threading.Thread.Sleep(1000) 

MyValue = cpu.NextValue() 

Thật khó để biết nếu nó vẫn trở về con số chính xác, nhưng nó rất gần (trong vòng 1 điểm) với những gì chương trình perfmon. Tôi đã thử nó với 2 giây và nó dường như là một chút gần gũi hơn với những gì perfmon cho thấy.

Từ http://blogs.msdn.com/b/dotnetinterop/archive/2007/02/02/system-diagnostics-performancecounter-and-processor-time-on-multi-core-or-multi-cpu.aspx:

Hãy ghi nhớ rằng bạn cần phải trì hoãn "khoảng 1 giây" giữa các cuộc gọi đến NextValue(), theo các tài liệu!

... và liên kết với https://msdn.microsoft.com/en-us/library/system.diagnostics.performancecounter.nextvalue.aspx, trong đó nêu:

Nếu giá trị tính toán của mình một bộ đếm phụ thuộc vào hai quầy đọc, thao tác đọc đầu tiên trả về 0.0. Đặt lại các thuộc tính bộ đếm hiệu suất để chỉ định một bộ đếm khác nhau tương đương với việc tạo bộ đếm hiệu năng mới và thao tác đọc đầu tiên sử dụng các thuộc tính mới trả về 0.0. Thời gian trễ được đề nghị giữa các cuộc gọi đến phương thức NextValue là một giây, để cho phép bộ đếm thực hiện lần đọc tiếp theo.

Các vấn đề liên quan