2010-09-26 35 views
5

Tôi đang gặp phải sự cố về hiệu suất trên ứng dụng asp.net của mình. Đôi khi nó sẽ đưa khách hàng 30-40 giây để thực hiện một lệnh, trong đó như trong đôi khi nó sẽ mất 3-4 giây. Tôi đã thử SQL Profiler và tôi không thấy bất kỳ vấn đề nào. Tôi đã không thể sao chép vấn đề về phía tôi, trong cùng một tình huống khi khách hàng đang thử.Hiệu suất phiên ASP.NET

Tôi nghĩ rằng nó có thể làm với các biến phiên tôi đang sử dụng. Tôi đang sử dụng rất nhiều người trong số họ để chuyển thông tin trong trang. Tuy nhiên tôi không xóa chúng.

Nếu tôi xóa chúng, nó có giúp được không? và nếu Điều này có ảnh hưởng đến những người dùng khác không. Hay nó chỉ rõ ràng cho người dùng đó?

Mọi trợ giúp đều được đánh giá cao.

+0

Bạn có thể cung cấp cho chúng tôi thêm thông tin về tải máy chủ khi điều này xảy ra, bao gồm cả mức sử dụng CPU và mức sử dụng bộ nhớ không? Tôi thường tìm deadlocks tài nguyên hoặc timeouts khi yêu cầu đột nhiên bắt đầu dùng 30+ giây. – sisve

+2

Những loại câu hỏi này thực sự khó trả lời. Phần cứng như thế nào? Có bao nhiêu người dùng máy chủ web? Chính xác số lượng dữ liệu trong phiên (bạn có thể định lượng "rất nhiều dữ liệu") cho mỗi người dùng không? Có bao nhiêu người dùng máy chủ SQL? Sự khác biệt về nền tảng/phần cứng/thông lượng mạng và khoảng một triệu yếu tố khác (mã xấu, kiến ​​trúc kém, thời gian trong ngày, cân bằng tải, bộ nhớ đệm, v.v.) có thể ảnh hưởng đến hiệu suất. Môi trường như thế nào? –

+0

Bạn đang sử dụng chế độ Trạng thái phiên nào? tức là inproc, sqlserver hoặc máy chủ tiểu bang? Hai cái sau sẽ sử dụng nhiều tài nguyên hơn cái cũ, mặc dù chúng cũng có khả năng đàn hồi hơn. –

Trả lời

0

Phiên và do đó, biến phiên là người dùng cụ thể nên việc xóa chúng sẽ không ảnh hưởng đến người dùng khác.

giữ ánh sáng phiên chắc chắn sẽ giúp cải thiện hiệu suất.

0

Đề nghị phiên ASP.NET sẽ không ảnh hưởng đến thời gian khứ hồi SQL Server của bạn trong quá trình hoạt động bình thường. Giả sử không có gì được lưu trữ trong phiên liên quan đến lớp dữ liệu của bạn (tức là đối tượng SqlConnection tĩnh)

Nếu bạn thấy những thời gian dài (30-40 giây), hãy thử xác định xem hiệu suất có chậm dần hay không Thời gian khứ hồi của SQL Server là sporradic.

Cân nhắc triển khai ghi nhật ký để giúp xác định mẫu. Bắt đầu bằng cách ghi vào đĩa, một tệp mỗi ngày/giờ khi bạn thấy thích hợp.

  • thời gian bắt đầu của lệnh SQL bắt đầu. Đăng nhập truy vấn/tập dữ liệu/thông tin có liên quan mà bạn đang chuyển.
  • thời gian kết thúc của lệnh SQL.
 
--- Executing statement SELECT * FROM Customers 
--- Start 08:55.44 
--- End 08:55.45 
=== Roundtrip was 1 second SELECT * FROM Customers 

Sau một giờ/ngày/tuần, mở các bản ghi để tìm kiếm "khứ hồi", và có lẽ viết một chương trình để phân tích các bản ghi cho bạn.

1

Đã xảy ra sự cố khóa bản ghi trong một trong các thủ tục được lưu trữ trong triển khai .NET 2.0 dựa trên lưu trữ phiên SQL Server. Có vẻ như MS đã kết hợp bản sửa lỗi trong bản phát hành .NET 4.0.

Hãy xem ở đây: http://sanjevsharma.blogspot.com/2008/03/improving-aspnet-session-state-database.html

Tôi 99% chắc chắn bạn có thể chạy phiên bản 4.0 của aspnet_regsql -ssadd và vẫn chạy ASP.NET 2.0 chống lại nó. Tôi nhớ làm một khác biệt của kịch bản SQL 2.0 so với 4,0 và sửa chữa ở trên là sự khác biệt thực sự duy nhất. MS 'thực hiện sửa chữa là một chút đẹp hơn (và rõ ràng dựa trên) liên kết ở trên.

0

Nếu vấn đề dường như không phải là cơ sở dữ liệu của bạn, bạn có thể thử lược tả ứng dụng web của mình và xem nơi các nút cổ chai đang ở đâu. Rất khó để tái tạo các vấn đề biến như bạn đang thấy trong sản xuất (4 - 40 giây trì hoãn), nhưng kết quả của số cuộc gọi phương thức đang diễn ra và những cuộc gọi nào tiêu tốn thời gian thực thi nhiều nhất có thể đưa ra gợi ý.

Một số được đề cập trong What Are Some Good .NET Profilers?

Cá nhân tôi là một fan hâm mộ lớn của các hồ sơ EQATEC.

0

Nếu bạn có sự thay đổi về quy mô đó, bạn có thể xem xét một số vấn đề về khóa hoặc tranh chấp. Tùy thuộc vào thời gian, và những gì khác đang xảy ra khi bạn hồ sơ, bạn có thể không thấy một vấn đề khóa SQL nếu đó là những gì nó được. Hãy thử theo dõi số liệu khóa trong perfmon để xem liệu có bất kỳ điều gì đáng ngờ ở đó hay không và đưa ra một số suy nghĩ về những gì khác trong hệ thống có thể gây ra bất kỳ loại thời gian chờ khóa hoặc thời gian chờ nào.

0

Bạn đã thử bật ghi nhật ký dò vết ASP.NET và xem thời gian tải trong ngăn xếp cuộc gọi chưa? Tôi đã sử dụng này khá một chút để chẩn đoán tắc nghẽn trong hiệu suất ASP.NET. Nếu bạn không quen với trace.axd, bạn có thể kích hoạt nó thông qua tập tin cấu hình của bạn

<trace enabled="true" /> 

Kích hoạt cài đặt cấu hình này sẽ cho phép bạn duyệt đến trace.axd tại thư mục gốc của trang web của bạn và xem 10 giao dịch gần nhất chi tiết. Bạn có thể kích hoạt một tập hợp kết quả lớn hơn, tập hợp kết quả cán và một loạt các tùy chọn truy tìm tiện lợi khác thông qua phần tử theo dõi đó.

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