2009-07-08 42 views
9

Tôi đang bối rối. Tôi nhìn vào dấu vết của một trang bị "chậm" để tải theo ông chủ của tôi, làm cho trang tải một phần, và sau đó "nhảy" đến vị trí cuộn được ghi nhớ trên postback.Điều gì khiến trang hiển thị chậm?

Cuối cùng tôi đã phát hiện ra, sử dụng dấu vết của mình, bắt đầu từ Bắt đầu từ đầu đến cuối Render, mất 1,94 giây, 1,5 trong số đó được chi tiêu giữa Bắt đầu PreRender và End PreRender.

Bất kỳ ý tưởng nào về điều gì có thể gây ra điều đó? Thời gian tải lớn nhất tiếp theo là 0,14 giây, cho End PreRenderComplete.

Sự cố có thể bắt nguồn từ các truy vấn của tôi đối với SQL Server hay số lượng kiểm soát quá lớn trên trang, mặc dù hầu hết là "ẩn"?

[sửa:] Dường như tải trang của tôi rất dài khi tôi hiển thị một biểu mẫu nhất định. Tổng kích thước hiển thị của tôi là 91537 byte, 44483 trong số đó được dành riêng cho biểu mẫu cụ thể đó. ViewState của tôi có vẻ rất lớn. Ngoài ra: Có thể 404 đến tệp JS gây ra loại tụt hậu khi tải không?

[update:] Vì vậy, tôi đã tìm thấy truy vấn dài nhất, và có vẻ như mặc dù nó có vẻ khá chunky, nó đã kết thúc chạy lâu trước khi trang được tải. Khi thêm thông tin: Tôi đang sử dụng khá nhiều SqlDataSources troughout các điều khiển, để điền vào danh sách thả xuống của tôi và các công cụ thú vị khác như thế. Điều đó có làm lộn xộn ứng dụng của tôi không?

+0

sau khi đọc bản cập nhật của bạn, tôi vẫn nghĩ rằng bạn cần phải xem xét điều này trong một hồ sơ để biết chắc chắn. –

Trả lời

6

Theo kinh nghiệm của tôi (cùng vấn đề với bạn), đó là vấn đề về SQL 90%.

Đặt một số Đồng hồ bấm giờ xung quanh truy vấn bạn đang gọi để tìm ra truy vấn nào đang chạy chậm.

Rendering kiểm soát asp.net không thể lấy quá lâu ....

+0

Hiển thị các điều khiển ASP.NET CÓ THỂ mất nhiều thời gian để xem xét việc điều khiển có thể khá phức tạp (nghĩ đến một số thành phần Telerik ajax, v.v.). –

+0

Tôi đồng ý với điều này. Đặc biệt là nếu bạn đang sử dụng bất kỳ điều khiển Nguồn dữ liệu nào. Chạy SQL Profiler trong khi chạy ứng dụng. – NotMe

+0

Ồ, vì vậy SQLDataSource! = Ý tưởng hay? –

4

Để xác định nguyên nhân gây tắc nghẽn, bạn thực sự phải lập hồ sơ cho mã của mình bằng công cụ như ANTS Profiler hoặc thứ gì đó tương tự.

Trình hồ sơ sẽ cho phép bạn xác định khu vực sự cố bằng cách hiển thị cho bạn dòng mã nào chậm hơn các dòng khác.

+2

Bất cứ điều gì tôi không phải chi 400 đô la để tìm một vấn đề trong ứng dụng này?: P –

+2

Tôi nghĩ bạn có thể thử ANTS Profiler bằng cách tải xuống nó :). Tương tự, bạn có thể tải xuống bản dùng thử Visual Studio và cung cấp miễn phí hồ sơ VS. –

+1

Tôi đã sử dụng một bản dùng thử của ANTS Profiler cũng như Visual Studio's Performance Wizard và thấy chúng có thể so sánh được bằng nhiều cách. –

3

Tôi sẽ sử dụng YSlow để xác định xem nó từ một cái gì đó về phía khách hàng hoặc phía máy chủ. Đôi khi chúng tôi thêm bộ hẹn giờ vào một số truy vấn rồi xuất thời gian thực thi trong nhận xét html ... tất nhiên sẽ xóa chúng khi quá trình kiểm tra hoàn tất.

Trang có gọi bất kỳ thứ gì được lưu trữ trên trang web bên ngoài không?

+1

nếu vấn đề có thể được truy nguồn từ một nơi nào đó giữa preinit và endrender, có lẽ không có nhiều yslow có thể làm trong trường hợp cụ thể này. nhưng tôi sẽ đứng thứ hai rằng nó vẫn là một công cụ tốt và một câu trả lời phù hợp cho câu hỏi chung chung hơn trong tiêu đề –

0

Đặt cược tốt nhất của bạn là sử dụng số Perfomance Wizard in Visual Studio và xem Cây gọi cho trang của bạn. Nó sẽ cung cấp cho bạn thêm chi tiết vào các nút cổ chai hiệu suất chính xác.

Tôi đã thấy loại hiệu suất này khi có quá nhiều điều khiển phức tạp được khai báo trên trang. Mặc dù nó có thể dễ dàng được SQL liên quan là tốt. Để biết chắc chắn bạn cần phải nhìn vào Call Tree và tìm ra cuộc gọi đắt nhất là gì.

0

Tất nhiên, nếu nó liên quan đến sql, như nhiều người đã lưu ý, "sql server profiler" là công cụ để sử dụng (với điều kiện bạn đang chạy mssql). mysql có "jetprofiler" (.com) mà tôi chưa thử. một khi bạn đã tìm thấy truy vấn chậm, nó không hiếm khi là một vấn đề lập chỉ mục.

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