2012-03-01 16 views
5

Hi,Làm cách nào để làm việc với bộ đếm hiệu suất và dịch vụ WCF trong IIS?

Tôi có một dịch vụ WCF trong IIS7 giao tiếp với một ứng dụng Winform trên TCP (WS), bây giờ tôi cần phải theo dõi việc thực hiện.

Tôi đã thêm này vào file web.config:

<system.serviceModel> 
    <diagnostics performanceCounters="All" /> 

Sau khi mở Performance Monitor tôi chạy một vài thử nghiệm với Winform tôi để đảm bảo rằng các dịch vụ được kích hoạt.

Sau đó, tôi mở Trình giám sát hiệu suất (trực tiếp), nhấp chuột phải và thêm bộ đếm. Tôi mở rộng ServiceModelService 4.0.0.0 và chọn Thời lượng cuộc gọi và cuộc gọi, tôi cũng chọn dịch vụ của tôi (svc) được nêu trong trường hợp của hộp danh sách đối tượng được chọn và nhấp vào nút Thêm.

Khi chọn Thời lượng cuộc gọi và cuộc gọi trong ServiceModelOperation 4.0.0.0 thì sẽ không có trường hợp hoặc thao tác nào để chọn? Cũng vậy với ServiceModelEndpoint 4.0.0.0?

Khi nhấp vào Ok hai bộ đếm sẽ được thêm (ServiceModelService).

Tôi sau đó nhấp vào hiển thị unfreeze và khởi động ứng dụng winform của tôi mà thực hiện một vài cuộc gọi, tuy nhiên tôi không thấy bất cứ điều gì trong Performance Monitor. Tôi đã cố gắng nhấp chuột phải vào một trong các quầy hiệu suất và chọn "Scale Selected Counter" nhưng điều này không có gì?

Mục đích đơn giản là xem dịch vụ WCF hoạt động tốt như thế nào (tốc độ, thời lượng, số lượng, kết nối và vv) và cũng sẽ rất tuyệt vời để kiểm tra các hoạt động riêng lẻ.

Xin vui lòng trợ giúp!

Lưu ý: đây là bài viết tôi đã cố gắng làm theo: http://dkochnev.blogspot.com/2011/06/wcf-framework-40-monitoring-service.html

Trả lời

2

dịch vụ WCF bao gồm bộ đếm hiệu suất mà bạn có thể theo dõi với Windows Performance Monitor (Perfmon.exe). Bạn có thể khởi động này từ Administrative Tools trong Windows Server 2003.

Hiệu suất quầy có thể được kích hoạt từ phần chẩn đoán của tập tin .config cho dịch vụ, như thể hiện trong cấu hình mẫu sau:

<configuration> 
    <system.serviceModel> 
    <diagnostics performanceCounters="All" /> 
    </system.serviceModel> 
</configuration> 

bạn có thể muốn kiểm tra những bài viết này có thể hướng dẫn bạn về cách sử dụng các bộ đếm hiệu suất cho các dịch vụ WCF:

+4

Bạn đã đọc bài đăng của tôi chưa? đây là những gì Im đang làm nhưng tôi không nhận được bất kỳ lần đọc nào? Nó có thể được bởi vì Im sử dụng MessageInspectors trong WCF? – Banshee

+0

@Banshee, bất kỳ cơ hội nào bạn có thể cập nhật điều này với giải pháp cuối cùng của bạn, nếu có? Tôi đồng ý rằng đây là một câu trả lời khủng khiếp. – Dan

4

Nó trông như thế này có thể là một lỗi (hoặc một thiết kế tính năng) với cách đếm hiệu suất làm việc. Sau khi một số poking, tôi đã tìm thấy điều này trên MSDN forums:

Tôi có cùng một vấn đề.Có vẻ như Microsoft cắt đuôi đuôi kết thúc tên hoạt động khi đặt tên cho cá thể truy cập. Họ thay thế phần cắt ngắn bằng một số loại số ma thuật cơ bản 2 chữ số-10 số . Tôi đoán đó là một hàm băm, nhưng ai biết được nó thực sự đã được tạo ra như thế nào . Chà xát là con số này không được đảm bảo duy nhất và có thể gây ra va chạm trong tên truy cập. Nếu xảy ra va chạm như vậy, có vẻ như làm cho tất cả các điểm kết thúc và hoạt động biến mất (tại số ít nhất đối với tôi).

Tôi có hai phương thức có tên UpdateMarkupChunk và UpdateMarkupCancel. Nếu Tôi nhận xét ra một hoặc khác để khác không tồn tại, họ cả hai giải quyết để UpdateMarkupC53 trong tên dụ truy cập. Khi tôi nhận xét cả hai trường hợp này, không có trường hợp truy cập nào xuất hiện cho ServiceModelEndpoint hoặc ServiceModelOperation.

Bạn có thể đề xuất giải pháp cho việc này không, Microsoft? Tôi có một dịch vụ sản xuất đã có sẵn mà tôi muốn theo dõi và thay đổi tên hoạt động không phải là một tùy chọn.

Và Microsoft đáp lại bằng:

Bạn là chính xác. Và hành vi này là do thiết kế. Có giới hạn trên độ dài của tên đối tượng hiệu suất.

Bộ đếm hiệu suất hoạt động được tìm thấy trong đối tượng hiệu suất ServiceModelOperation 4.0.0.0 khi xem với màn hình hiệu suất (Perfmon.exe). Mỗi thao tác có một cá thể riêng lẻ. Nghĩa là, nếu hợp đồng đã cho có 10 hoạt động, 10 hoạt động phiên bản đối tác được liên kết với hợp đồng đó. Các trường hợp đối tượng được đặt tên bằng cách sử dụng mô hình sau:..

(ServiceName) (ContractName) (OperationName) @ (endpoint đầu tiên nghe địa chỉ)

Khi một tên Windows Communication Foundation (WCF) Ví dụ truy cập vượt quá độ dài tối đa, WCF thay thế một phần của tên dụ với giá trị băm.

Vì vậy, có vẻ vì giới hạn tên tối đa này, cơ hội lớn của va chạm băm khi chỉ có hậu tố băm hai chữ số và khi hai lần truy cập có cùng tên, nó sẽ xóa toàn bộ truy cập mà nó không thực sự có thể.

Điều gì gây phiền toái hơn một chút. Vì vậy, trừ khi Microsoft sửa lỗi này (giá trị băm dài, hoặc xử lý va chạm tốt hơn bởi bộ đếm perf), hoặc cung cấp giải pháp thích hợp, chúng tôi đang làm việc mù.

+0

Vui mừng khi tìm thấy nhận xét này. Đây chính là lý do tại sao tôi không thấy bất kỳ hoạt động nào trong ServiceModelOperation 4.0.0.0 trong PerfMon. Cảm ơn rất nhiều, Microsoft. Thiết kế cực kỳ ngu ngốc. – MiloDC

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