12

Tôi đang cố gắng tìm ra cách để cấu hình một dịch vụ WCF để tôi có thể xác định bất kỳ tắc nghẽn nào.
Tôi đã tìm thấy một số thông tin trực tuyến, nhưng không có gì giả định không có kiến ​​thức trước là nơi tôi đang ở.Làm thế nào để bắt đầu với hồ sơ hiệu suất WCF

Công cụ MIỄN PHÍ được đề xuất là gì?

- visual studio tools 
- clrprofiler 

Here là thông tin tôi thấy sử dụng vsperfcmd.exe để cấu hình WCF dịch vụ và theo này nó rất đơn giản, nhưng tôi cần phải điền vào những khoảng trống trên bắt đầu từ đâu. Giả định của tôi là sao chép VsPerfCLREnv và VsPerfCmd vào máy chủ lưu trữ dịch vụ wcf của tôi và thực hiện một số bước cấu hình mà tôi không chắc chắn. Tôi cũng không hoàn toàn chắc chắn như thế nào tôi sẽ có thể nhìn thấy ngăn xếp cuộc gọi để đánh giá hiệu suất của mỗi cuộc gọi.

clrprofiler có vẻ đơn giản hơn một chút. Tôi giả sử tôi sẽ sao chép clrprofiler.exe đến máy chủ, File->Profile Service và thêm tên và bắt đầu/dừng lệnh. (đây là một tên thân thiện hoặc tên tập tin hoặc tên hiển thị dịch vụ?) Tôi giả sử tôi sau đó sẽ chạy thử nghiệm của tôi đối với dịch vụ và tôi có thể thấy các cuộc gọi ngăn xếp trong clrprofiler. Điều đó có đúng không?

[2]
Tôi không muốn thử nghiệm mạng vì đây là trên máy chủ thử nghiệm, và đây là dự án wcf lớn với nhiều nhà phát triển và tôi không thể thực hiện thay đổi cho dự án mục đích duy nhất là theo dõi hiệu suất. Tôi muốn tập trung vào hiệu suất của các phương pháp thực tế bên trong nó.

Bất kỳ hỗ trợ nào khi bắt đầu được đánh giá cao.

+0

Bạn cũng có thể sử dụng "Perfmon" - www.codeproject.com/Articles/431917/WCF-Service-Performance-Monitoring-using-Perfmon –

Trả lời

5

một số điều tôi đã học được rằng ai đó có thể thấy hữu ích:

bạn không thể từ xa cấu hình một dịch vụ, thậm chí qua mạng cục bộ. Trình lược tả phải đang chạy trên cùng một máy với dịch vụ. (Điều này thực sự đã cho tôi một thời gian để tìm ra. Có thể rõ ràng với bạn, nhưng nó không bao giờ được viết ra vì vậy tôi tiếp tục cố gắng để làm điều đó)

Visual Studio không làm việc cho tôi để hồ sơ dịch vụ WCF của tôi. Tôi đã có thể nhận được một chút giúp đỡ từ đội ngũ profiler VS, nhưng không bao giờ ra khỏi nó với một giải pháp làm việc.

VS đã chậm kết nối và ngắt kết nối profiler và thường thiết lập các tệp nhị phân của tôi và để chúng ở trạng thái bị hỏng.

. Các tệp nhị phân trên mạng không cần phải được thiết bị vì chúng chứa siêu dữ liệu của các phương pháp kỳ quặc mà studio trực quan vẫn giữ các tệp nhị phân của tôi cố gắng thiết lập chúng.

Tôi cũng đã thử trình thu thập độc lập VS nhưng điều này rất phức tạp để sử dụng và yêu cầu khởi động lại máy chủ của tôi.

Tôi đã nhận được một hồ sơ nội bộ để làm việc (sau khi nhận được một xây dựng tư nhân từ nhóm) vì vậy tôi không chắc chắn bao nhiêu profilers ra có được thiết kế để làm việc với một dịch vụ WCF.

Tôi thực sự đặt trình hồ sơ để xem dịch vụ WAS và sau đó thêm các tệp nhị phân bổ sung của tôi vào hồ sơ.

trình khám phá quy trình hữu ích khi khắc phục sự cố nếu profiler được kết nối hay không. Sử dụng nó để xem xét môi trường inetinfo.exe

1

Bạn có thể chạy nó dưới trình gỡ lỗi không?

Bạn có thể đứng một phương pháp đơn giản, lỗi thời, chỉ hoạt động? Here's one.

1

Ngoài nhận xét của Mike, bạn có thể sử dụng bộ đếm hiệu suất WCF tích hợp để xem một số chỉ số liên quan đến hiệu suất và bạn cũng có thể xem thời gian gọi trên theo dõi WCF. Một khi bạn biết các hoạt động nào là 'chậm' thì thường dễ dàng thêm một số mã thời gian/ghi nhật ký tùy chỉnh vào các hoạt động đó hơn là sử dụng một trình lược tả mục đích chung cho một thứ như thế này. Điều này đến từ một người sử dụng để làm việc trên profilers thương mại.

6

Đối với WCF, không đủ để cấu hình mã của bạn chỉ vì một loạt các sự kiện xảy ra trên ngăn xếp kênh (bảo mật, deserialization, định dạng, vv). Một cách tốt để hình dung rằng đó là bằng cách sử dụng WCF Tracing ở mức tiết và sau đó sử dụng service trace viewer để xem nó mất bao lâu ở mỗi bước xử lý tin nhắn. Đọc ở đây về cách configure and use WCF tracing. Đây là điều đơn nhất đã làm tôi bị chẩn đoán với các vấn đề WCF.

Tất nhiên tất cả các cấu hình mã khác, cấu hình DB, vv là phương pháp hợp lệ. Bạn thậm chí có thể sử dụng một công cụ như SoapUI để kiểm tra thông tin liên lạc mạng và chi phí hiệu suất phía ứng dụng khách của bạn để có thêm điểm chuẩn đầu cuối.

+0

Có. Cách tôi xử lý các tình huống không đồng bộ là 1) sử dụng tạm dừng ngẫu nhiên trên các chủ đề để đảm bảo chúng hiệu quả nhất có thể, và sau đó 2) ghi nhật ký thông báo chi tiết, sáp nhập qua các quy trình. Tôi sẽ không nói rằng nghiên cứu các dấu vết tin nhắn là dễ dàng, nhưng nó có hiệu quả. Đối với tôi, thật đáng ngạc nhiên khi một giao thức truyền thông điệp không đồng bộ có thể được thực hiện nhanh đến mức nào. –

+0

cảm ơn, tôi đang tìm kiếm trong wcf truy tìm, nhưng tôi không chắc chắn những gì để tìm kiếm trong đầu ra. Tôi chủ yếu quan tâm đến các tắc nghẽn hiệu suất của máy chủ so với giao tiếp mạng và ứng dụng khách. Tôi có một vài phương pháp mục tiêu tôi muốn phân tích và xem những cải tiến có thể được thực hiện ở đâu. – earthling

+1

Nếu bạn mở dấu vết trong trình theo dõi dịch vụ, bạn sẽ thấy tất cả các hoạt động trong quá trình xử lý tin nhắn xà phòng. Một trong số đó là Thực thi hoạt động của Mã Người dùng và xem chi tiêu thời gian. Điều này sẽ cho bạn biết bạn cần bao nhiêu thời gian để thực thi. Nhưng thực sự nếu bạn cần phải đi sâu vào nút cổ chai hiệu suất trong mã của bạn, bạn phải sử dụng một hồ sơ như trình biên dịch Visual Studio tích hợp hoặc trình biên dịch hiệu năng tuyệt vời từ RedGate. – softveda

1

Công cụ bạn nên xem xét: svctracelogviewer (và bật truy tìm trong cả dịch vụ và khách hàng của bạn). SoapUI cho mô phỏng tải (và làm phân tích) và Fiddler, một công cụ tuyệt vời sniffer/chẩn đoán HTTP.

+0

bạn có biết cách sử dụng trình điều khiển để giám sát lưu lượng truy cập wcf không? Tôi đang sử dụng các khách hàng kiểm tra wcf và không nhận được bất kỳ thông tin trong fiddler. – earthling

+0

Bạn đang cố gắng sử dụng Fiddler đối với một dịch vụ đang chạy trên máy chủ cục bộ? Nếu có, hãy xem tài liệu bạn cần làm để làm cho nó hoạt động. – larsw

+0

Dịch vụ được lưu trữ trên máy chủ thử nghiệm. Bây giờ tôi nghĩ về nó, tôi không chắc chắn nếu điều này là có thể với fiddler kể từ khi dịch vụ được sử dụng tcp ràng buộc. Có lẽ đây là một câu hỏi tốt hơn còn lại cho một chủ đề mới. – earthling

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