2009-11-05 25 views
5

Có một số lớn presentation bởi Dan Farino, Kiến trúc sư trưởng tại MySpace.com, trưng bày công cụ xếp chồng dựa trên web liệt kê tất cả các chuỗi đang chạy trong một quy trình cụ thể được thực hiện, vv)Công cụ Dump Stack dựa trên web cho ASP.NET bằng Mdbg?

kỹ thuật của họ cũng được tóm tắt trên highscalability.com:

  • PerfCollector.
    Tập trung thu thập dữ liệu hiệu suất qua UDP. Đáng tin cậy hơn Windows và cho phép bất kỳ khách hàng nào kết nối và xem thống kê .
  • Công cụ Dump Stack dựa trên web.
    Có thể nhấp chuột phải vào máy chủ sự cố và nhận kết xuất ngăn xếp của .Net chuỗi được quản lý. Được sử dụng để có RDC vào hệ thống và đính kèm một trình gỡ lỗi và 1/2 sau đó nhận được câu trả lời. Chậm, không thể kiếm được và tẻ nhạt. Không chỉ là một bãi chứa ngăn xếp , cung cấp nhiều bối cảnh về những gì chuỗi đang làm. Khắc phục sự cố dễ dàng hơn vì bạn có thể thấy 90 luồng bị chặn trên cơ sở dữ liệu để cơ sở dữ liệu có thể bị hỏng.
  • Công cụ Dump nền tảng cơ sở web.
    Dumps tất cả phân bổ bộ nhớ. Rất hữu ích cho nhà phát triển. Tiết kiệm số giờ làm việc đó bằng tay . • Hồ sơ. Theo yêu cầu từ đầu đến cuối và tạo báo cáo . Xem URL, phương pháp, trạng thái, mọi thứ sẽ giúp bạn xác định yêu cầu chậm. Nhìn vào số các tranh chấp về khóa, có rất nhiều trường hợp ngoại lệ bị ném, bất kỳ điều gì có thể thú vị. Rất nhẹ trọng lượng. Nó chạy trên một hộp trong mọi VIP (nhóm 100 máy chủ) trong sản xuất . Lấy mẫu 1 sợi mỗi 10 giây. Luôn truy tìm trong nền .

Câu hỏi đặt ra là: công cụ cần thiết để xây dựng công cụ đổ ngăn xếp dựa trên web cho ASP.NET là gì? Để thuận tiện, hãy giả sử rằng * .aspx được lưu trữ trong AppDomain đích, có thể xuất tất cả các ngăn xếp cuộc gọi được quản lý trong quá trình đó, là đủ.

Có một vài bài viết mà bao gồm việc sử dụng các Mdbg (debugger cho mã số quản lý được viết hoàn toàn bằng C#/IL mà bắt đầu vận chuyển với CLR 2 SDK) và lắp ráp mdbgcore thường được tìm thấy trong C: \ Program Files \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ Bin:

Giải pháp đơn giản có thể tham chiếu đến hội đồng này để tạo ra kết quả mong muốn không?Tác động nào đến việc "liệt kê tất cả hoạt động của ngăn xếp cuộc gọi được quản lý" có trên quy trình đang chạy phục vụ lưu lượng truy cập sản xuất?

Trả lời

3

Tôi tin rằng API lược tả của .Net là cách để thực hiện.

Nhìn vào dự án SlimTune trên Google Code để có mẫu trực tiếp, với các nguồn, bạn có thể kiểm tra cách điều chỉnh và cải thiện để hoạt động trong kịch bản Asp.NET.

Trân Massimo

2

Với API hồ sơ của Net bạn phải ngăn chặn các máy chủ và phải mất một CPU rất nhiều (nhưng nó mang lại cho bạn toàn quyền kiểm soát tất cả các phương pháp gọi là).

Tôi nghĩ giải pháp "ánh sáng" nhất là làm điều này với MDbg, tôi đặt cùng một ứng dụng nhỏ nhưng rất hữu ích được gọi là StackDump thực hiện như sau: 1) Trình gỡ lỗi dừng ứng dụng và tạo danh sách tất cả các ngăn xếp CLR đang chạy cho quá trình này. 2) Ứng dụng được bắt đầu lại. Thao tác này hoạt động nhanh và có thể (có thể) được thực thi trên máy chủ sản xuất đang chạy với mã sản xuất không thay đổi.

Chỉ 80 dòng mã .Net để quản lý điều này. Tôi đã xuất bản source code trên Codeplex.

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