2013-02-25 27 views
6

Chúng tôi có một trang web lưu lượng truy cập cao tạo ra rất nhiều I/O. Trong vòng 10 phút, nó đã đọc hơn 10 gb dữ liệu (w3wp được đề cập trong phần quản lý tác vụ). Đối với bộ nhớ và ứng dụng bị treo, tôi đã sử dụng WinDbg với thành công. Nhưng tôi không biết làm thế nào tôi có thể tìm thấy (các) đối tượng/phương pháp (s) trong một quá trình chịu trách nhiệm cho I/O cao nhất.Cách tìm điểm nút i/o trong ứng dụng asp.net

Điều này có thể thực hiện được không?

Sửa Câu hỏi là: Có cách nào để cấu hình I/O hoạt động trong một assembly .NET, nói: danh sách các chủ đề được sắp xếp theo đĩa cao nhất I/O (hoặc một cái gì đó tương tự mà có thể giúp tôi từ đâu nhìn)

+0

Bạn có biết điều gì có thể xảy ra trong mã của mình hay bạn đang chạy hoàn toàn mù? –

+0

Tôi không có ý tưởng, đi bộ mặc dù tất cả các mã nhiều lần (nó khá một trang web lớn, rất nhiều chức năng). Có thể tải lên và đăng hình ảnh nhưng đó là khoảng 10gb mỗi tháng dữ liệu. –

+0

Bạn có đang xử lý những hình ảnh đó trong ứng dụng một cách tình cờ không? –

Trả lời

6

ANTS Performance Profiler

tôi đã sử dụng công cụ này để thành công rực rỡ - đối phó với việc tìm kiếm các hướng dẫn cụ thể được gây ra ~ 512GB bộ nhớ trên một nông trang web có dung lượng lớn bị nhai lên trong vòng 5-10 phút . Âm thanh như một tình huống tương tự như của bạn.

Bây giờ, để thực tế - nó sẽ không giải quyết vấn đề của bạn một cách kỳ diệu. Nó vẫn đòi hỏi rất nhiều thiết lập, phân tích kỹ lưỡng và công việc thám tử. Nhưng công cụ này chắc chắn đã đưa vấn đề từ "thực tế unsolvable" để "giải quyết trong ngày".

Cập nhật:

Như tôi đã đề cập trong các ý kiến ​​(và Bến Emmett lặp lại), chúng tôi có thể sử dụng ANts để giám sát bộ nhớ, hệ thống tập tin xử lý - khá nhiều bất kỳ tiêu thụ tài nguyên và khoan xuống các cuộc gọi stack để xem ảnh hưởng của các thói quen cụ thể.

+0

Bạn có thể xây dựng một chút về cách làm điều đó với kiến ​​không? Bạn đang sử dụng bộ nhớ hồ sơ? Tôi tìm thấy nó một chút hạn chế so với windbg. –

+0

@Elger bắt đầu từ các thói quen nghi ngờ ngoài cùng, chúng ta có thể xem bao nhiêu bộ nhớ, xử lý FS, vv tích lũy trong quá trình đó - và bắt đầu đi sâu vào các thói quen sâu hơn trong khi nhìn thấy sự tích tụ tài nguyên tương đối bằng phẳng. về vấn đề này. –

+0

Nhưng mức tiêu thụ bộ nhớ thực sự không đáng lo ngại (tối đa 400 mb lúc bận rộn, khoảng 275 mb bình thường đối với ứng dụng 64 bit). Bạn có ý nghĩa gì bởi 512GB bộ nhớ trong tình huống của bạn? –

1

Tôi đã đưa ra công cụ này AppDynamics Lite hiển thị ứng dụng của bạn gọi chi phí và hiệu suất theo cách trực quan. Nó có thể giúp bạn tìm ra các chức năng nào đang tạo ra các hoạt động IO đắt nhất.

Trích dẫn;

Hiểu được sức khỏe của CLR của bạn với số liệu chính như thời gian đáp ứng, thông lượng, tỷ lệ ngoại lệ, và thời gian thu gom rác thải cũng như tài nguyên hệ thống quan trọng như CPU, bộ nhớ và đĩa I/O.

Đáng giá khi dùng thử miễn phí trong 30 ngày. Hy vọng nó giúp. Ps: Tôi không liên kết với AppDynamics theo bất kỳ cách nào.

1

Bạn có thể sử dụng (miễn phí) Windows Performance Toolki t từ Windows 8 cũng chạy trên Windows Vista trở lên. Ở đó bạn có thể bật hệ thống hồ sơ rộng để xem những gì đang xảy ra trong tất cả các quá trình cùng một lúc. Không cần thiết bị đo đạc. Chỉ cần khởi động lại một lần để thiết lập khóa đăng ký phức tạp được thực hiện bởi WPRUI.exe tự động.

Với XPerf bạn có thể bật IO Init ngăn xếp đi bộ sao cho ngăn xếp cuộc gọi được thực hiện cho mọi IO được bắt đầu. Vấn đề duy nhất là các ngăn xếp sẽ bị hỏng cho các quy trình 64 bit có nghĩa là bạn sẽ chỉ thấy phương pháp đầu tiên bên trên các phương pháp BCL của mã của bạn vì có một lỗi Windows 7 trong khả năng stackwalking của hệ điều hành.

Giải pháp thay thế là Ngen các hội đồng của bạn hoặc di chuyển đến Máy chủ 2012 hoặc chuyển sang x86 để định cấu hình để xem các ngăn xếp cuộc gọi sâu hơn.

Bạn sẽ thấy tất cả các tệp IO và hoạt động CPU ngay cả khi không có bất kỳ ngăn xếp cuộc gọi và tên tệp nào trong khoảng thời gian đĩa cứng được sử dụng. Điều đó sẽ cung cấp cho bạn thông tin tốt mà một phần của ứng dụng của bạn đang gây ra đĩa IO. Từ ngăn xếp cuộc gọi một phần, bạn sẽ có thể xác định vấn đề của mình ngay cả khi không có ngăn xếp đầy đủ.

Công cụ này sẽ cung cấp cho bạn thông tin chi tiết hơn nhiều so với bất kỳ hồ sơ thương mại nào có sẵn với chi phí mà bạn cần phải học cách sử dụng nó. Vì ngăn xếp cuộc gọi không kết thúc ở mã của bạn hoặc ở chế độ người dùng nhưng trong hạt nhân, bạn cũng có thể xác định xem ví dụ: máy quét vi-rút đang gây ra sự chậm trễ IO đáng kể. Nhưng bạn cần phải biết bộ vi xử lý của bạn hoạt động như thế nào. Bộ công cụ này ban đầu nhắm vào các devs kernel, giải thích tại sao bạn thấy rất nhiều cột vô ích.

Trong hình bên dưới, bạn thấy tệp IO và mức tiêu thụ CPU được xếp chồng lên nhau. Khi bạn chọn tệp IO cao của bạn trong biểu đồ IO đĩa, nó sẽ làm nổi bật trong việc tiêu thụ CPU tất cả các ngăn xếp cuộc gọi có liên quan được thực hiện cùng một lúc trong khi IO hoạt động. Bằng cách này bạn có thể diretly điều hướng từ IO đến các chủ đề có khả năng bị chặn của bạn.

enter image description here

+0

Wow, cảm ơn rất nhiều vì sự thấu hiểu. Tôi không biết điều này tồn tại. Tôi sẽ thử nó. –

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