2009-04-15 36 views
5

Tôi đang xây dựng giải pháp dựa trên máy khách-máy chủ; client là một ứng dụng desktop và máy chủ là một ứng dụng web.Theo dõi tài nguyên (mạng) tài nguyên và hiệu suất của ứng dụng cửa sổ

Về cơ bản, tôi cần theo dõi hiệu suất và việc sử dụng tài nguyên của ứng dụng khách, là ứng dụng Windows Desktop dựa trên .NET 2.0.

điều quan trọng nhất tôi cần theo dõi là tài nguyên mạng mà khách hàng sử dụng, nghĩa là kích thước của dữ liệu chảy ra từ máy khách đến máy chủ và kích thước của dữ liệu mà khách hàng là bao nhiêu tải xuống từ máy chủ.

Ngoài ra, giám sát hiệu suất chung cũng sẽ giúp ích.

Vui lòng hướng dẫn.

Chỉnh sửa: Một số người đã đề xuất sử dụng perfmon, nhưng không phải là giá trị được hiển thị trong toàn hệ thống perfmon? Tôi cần các số liệu thống kê dựa trên mạng này cho một ứng dụng duy nhất ... các byte được gửi và nhận bởi một ứng dụng máy tính để bàn duy nhất.

Trả lời

2

Bạn cần phải tách giám sát của mình theo hai phần:

  • Làm thế nào hệ thống sẽ tương tác với máy chủ (số lượng cuộc gọi thực hiện)
  • Lưu lượng truy cập mạng (kích thước của dữ liệu được trao đổi cho bất kỳ cuộc gọi)

Phần đầu tiên (theo kinh nghiệm của tôi) thường bị loại bỏ trong khi nó có tầm quan trọng rất nhiều, vì việc có được kết nối mới thường đắt hơn nhiều khi lưu lượng dữ liệu trong chính nó.

Bạn không cho chúng tôi bất cứ điều gì về vua của kết nối mà bạn đang sử dụng (các cuộc gọi Tcpip mức thấp, các dịch vụ web, WCF hoặc những gì khác) nhưng đề nghị của tôi là:

  • Tìm một cách để xác định như thế nào nhiều thời gian ứng dụng của bạn gọi là máy chủ
  • Tìm bao nhiêu bất kỳ cuộc gọi duy nhất là chi phí trong kỳ của dữ liệu trao đổi

Làm thế nào để theo dõi những giá trị này phụ thuộc rất nhiều từ các công nghệ có liên quan, đối với một số rất đơn giản (nếu, ví dụ: bạn đang sử dụng dịch vụ web, thanh toán ing Fiddler để theo dõi các cuộc gọi và kiểm tra kết quả giám sát rất đơn giản), đối với các bạn cần làm việc bằng máy phân tích lưu lượng thấp như Wireshark hoặc MS Network Monitor và tìm hiểu cách lọc lưu lượng theo địa chỉ IP của máy chủ, cổng được sử dụng và các thông số khác.

Nếu bạn làm rõ kiến ​​trúc ứng dụng của mình, tôi có thể cố gắng cụ thể hơn.

Trân Massimo

0

Bạn muốn xem xét perfmon (hay còn gọi là Giám sát hiệu suất trong công cụ quản trị từ menu bắt đầu).

Mở trong chế độ xem biểu đồ mặc định, thêm bộ đếm, chọn giao diện mạng, sau đó là byte trên giây (hoặc bộ đếm tương tự), hãy nhấp vào OK và bạn đã hoàn tất.

Bạn có thể thử nghiệm với các bộ đếm mạng khác vì có rất nhiều, một trong số chúng sẽ thực hiện chính xác những gì bạn muốn. Bạn cũng có thể lưu nhật ký perfmon vào một tệp và xem chúng sau đó - bạn sẽ thấy toàn bộ biểu đồ và bạn có thể "phóng to" trên các phần. Ngoài ra, bạn có thể lưu các tệp kiểu nhật ký chỉ với số nguyên.

Dưới đây là quick guide thông qua perfmon dưới dạng công cụ quản trị, sau khi bạn hiểu điều đó, phần còn lại đến dễ dàng. Trong Vista, bạn không thể thêm các bộ đếm cá nhân nữa, bạn thêm toàn bộ các bộ đếm được nhóm lại dưới một đối tượng - vì vậy cho ví dụ của tôi, bạn sẽ thêm đối tượng Giao diện Mạng, sau đó bạn sẽ thấy tất cả các cá nhân quầy trên biểu đồ sau khi bạn bấm ok.

+0

không phải là các giá trị được hiển thị trong toàn bộ hệ thống toàn cầu? tôi cần các thống kê dựa trên mạng này cho một ứng dụng duy nhất ... các byte được gửi và nhận bởi một ứng dụng máy tính để bàn duy nhất. – Sameet

+0

ah có ... tốt, bạn có thể sử dụng đối tượng quá trình và cá thể ứng dụng để xem tất cả các số IO (ví dụ: byte dữ liệu I/O); tiếc là cũng bao gồm đĩa IO quá. – gbjbaanb

2

Bạn cũng có thể sử dụng Trình quản lý tác vụ để thực hiện việc này. Chuyển đến tab quy trình, sau đó chọn Xem>> "cột chọn". Kiểm tra "I/O read bytes" và "I/O write bytes". Sau đó tìm chương trình của bạn trong danh sách các quy trình và bạn có thể quan sát các giá trị tích lũy.

+0

theo msdn không chỉ là mạng, phải không? Số byte được đọc trong các hoạt động đầu vào/đầu ra được tạo ra bởi một quá trình, bao gồm tệp, mạng và thiết bị I/O. – duckworth

0

Nếu bạn muốn điều này được xây dựng vào codebase khách hàng của bạn, và không sử dụng một công cụ bên ngoài, bạn có thể sử dụng Performance Counters để có được quyền truy cập vào đây và hầu hết mọi thứ khác báo cáo của Performance Monitor, Task Manager, vv

3

Các công cụ tiêu chuẩn để theo dõi mạng là Wireshark. Nó cho phép bạn lọc lưu lượng mạng rất linh hoạt. Điều này có thể khá là quá mức cần thiết cho ứng dụng của bạn. Nếu bạn đang sử dụng .NET thuần túy, tôi khuyên bạn nên thêm đăng nhập hiệu năng vào các lớp mạng của bạn ở phía máy chủ- nếu bạn đang sử dụng các lớp thư viện .Net, sau đó kế thừa từ các lớp của riêng bạn, bổ sung số liệu thống kê khi gửi và nhận dữ liệu .

2

Tôi đã thử sử dụng perfmon và tôi cũng không thể xem lưu lượng mạng của mình. Nhưng tôi đã có thể trong Performance Explorer trong bộ Visual Studio 2005 Team suite.

Nếu bạn có phiên bản Team Visual Studio, bạn có thể thiết lập Lấy mẫu/Thiết bị trên ứng dụng dành cho máy tính để bàn của mình. Sau đó đi vào các tùy chọn của phiên. chọn Events -> Windows Kernel Trace -> Network. Chạy ứng dụng của bạn và để Visual Studio ghi dữ liệu. Sau đó lưu báo cáo. (Tôi yêu Microsoft cho "tính năng" này) đi đến dấu nhắc lệnh, điều hướng đến C: \ Program Files \ Microsoft Visual Studio 8 \ Team Tools \ Công cụ hiệu suất và chạy "vsperfreport/CALLTRACE (tên tệp) .vsp" Điều này sẽ tạo ra một Tệp csv chứa tất cả các gói mạng được gửi/nhận/kích thước/cổng vv bởi ứng dụng dành cho máy tính để bàn.

Tôi biết đây là một giải pháp dài nhưng tôi đã thử nó trên ứng dụng .Net 2.0 của tôi và nó đã nắm bắt tất cả các giao tiếp của chúng tôi với Oracle Identity Manager và Oracle Database.

1

Nó không phải là rõ ràng qua đường bưu điện của bạn nếu bạn đang sử dụng các yêu cầu HTTP. Bạn đã chỉ ra rằng máy chủ là một ứng dụng web, có nghĩa là (có lẽ không chính xác) với tôi rằng bạn có thể đang sử dụng giao thức HTTP để gửi/nhận dữ liệu từ máy chủ đến máy khách.

Nếu có, một công cụ có thể được sử dụng là Fiddler.Công cụ này sẽ giám sát tất cả lưu lượng HTTP vào và ra khỏi máy trạm của bạn và nó có thể (tôi tin) xem các phiên và ứng dụng cụ thể. Phần tốt đẹp là bạn có thể xem các yêu cầu riêng lẻ và xem thống kê cho các yêu cầu này, bao gồm cả byte vào/ra, thời gian chuyến đi khứ hồi và các thông tin hữu ích khác.

Nếu bạn không dựa trên HTTP thì công cụ này sẽ không hữu ích.

1

Tôi ngạc nhiên không ai đề xuất SysInternals (hiện là Microsoft) Process Explorer (technet.microsoft.com/en-us/sysinternals/bb896653.aspx). Nếu bạn nhấp chuột phải vào tệp thi hành được đề cập và thuộc tính nhấp chuột trái, nó sẽ xuất hiện hộp thoại. Sau đó, bạn chuyển sang tab hiệu suất và bạn có thể theo dõi I/O của tệp thực thi. Tab Performance Graph sẽ hiển thị lịch sử sử dụng CPU và lịch sử byte I/O được vẽ theo thời gian. Đó là một công cụ tuyệt vời và miễn phí.

0

Bạn nên kiểm tra ACE Analyst cho trường hợp sử dụng này - nghĩ về nó như là một lớp siêu thông minh trên đỉnh của gói chụp Wireshark. Bạn cần phải xem xét các gói để hiểu bản chất thực sự của hành vi ứng dụng khi chạy trên mạng.

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