Tôi có nhiều người dùng trên trang web của mình (20000-60000 mỗi ngày), đây là trang tải xuống cho các tệp di động. Tôi có quyền truy cập từ xa vào máy chủ của mình (máy chủ windows 2008-R2).
Trước đây tôi đã nhận được lỗi "Máy chủ không khả dụng" nhưng hiện đang thấy lỗi hết thời gian kết nối.
Tôi không quen với điều này - tại sao nó xảy ra và làm cách nào để khắc phục nó?
Lỗi đầy đủ là dưới đây:
lỗi server trong ứng dụng '/' Thời gian hết hạn. Khoảng thời gian chờ đã trôi qua trước khi hoàn thành thao tác hoặc máy chủ không phản hồi. Các tuyên bố này đã bị chấm dứt. Mô tả: Một ngoại lệ chưa được xử lý đã xảy ra trong quá trình thực hiện yêu cầu web hiện tại. Vui lòng xem lại dấu vết ngăn xếp để biết thêm thông tin về lỗi và nguồn gốc của mã.
Chi tiết ngoại lệ: System.Data.SqlClient.SqlException: Hết hạn. Khoảng thời gian chờ đã trôi qua trước khi hoàn thành thao tác hoặc máy chủ không phản hồi. Các tuyên bố này đã bị chấm dứt.
Lỗi nguồn:
Một ngoại lệ chưa được xử lý đã được tạo trong quá trình thực hiện yêu cầu web hiện tại. Thông tin liên quan đến nguồn gốc và vị trí của ngoại lệ có thể được xác định bằng cách sử dụng dấu vết ngăn xếp ngoại lệ bên dưới.
Dấu vết ngăn xếp:
[SqlException (0x80131904): Hết thời gian hết hạn. Khoảng thời gian chờ đã trôi qua trước khi hoàn thành thao tác hoặc máy chủ không phản hồi. Báo cáo kết quả đã bị chấm dứt.]
System.Data.SqlClient.SqlConnection.OnError (SqlException ngoại lệ, Boolean breakConnection) 404
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning () 412
System.Data.SqlClient.TdsParser.Run (RunBehavior runBehavior , SqlCommand cmdHandler, SqlDataReader datastream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) 1363
System.Data.SqlClient.SqlCommand.FinishExecuteReader (ds SqlDataReader, runBehavior runBehavior, string resetOptionsString) 6.387.741
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) 6.389.442
System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String phương pháp, kết quả DbAsyncResult) + 538
System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery (kết quả DbAsyncResult, string methodName, Boolean sendToPipe) 689
System.Data.SqlClient.SqlCommand.ExecuteNonQuery () 327
NovinMedia.Data.DbObject.RunProcedure (string storedProcName, IDataParameter [] thông số , Int32 & rowsAffected) +209
DataLayer.OnlineUsers.Update_SessionEnd_And_Online (Object session_End, Boolean Online) +440
NiceFileExplorer.Global.Application_Start (Người gửi đối tượng, EventArss e) +163[HttpException (0x80004005): Hết thời gian hết hạn. Khoảng thời gian chờ đã trôi qua trước khi hoàn thành thao tác hoặc máy chủ không phản hồi. Tuyên bố đã bị chấm dứt.]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode (bối cảnh httpContext, ứng dụng httpApplication
) +4052053
System.Web.HttpApplication.ege Ban đầu Đặc biệt (trạng thái httpApplicationState, trình xử lý Phương thức [], trình xử lý IntPtr, ứng dụng IntPtr, liên kết ngữ cảnh) +352
System.Web.HttpApplicationFactory.GetecialApplicationInstance (IntPtr appContext,
liên kết của hệ thống).[HttpException (0x80004005): Hết thời gian hết hạn. Khoảng thời gian chờ đã trôi qua trước khi hoàn thành thao tác hoặc máy chủ không phản hồi. Báo cáo kết quả đã bị chấm dứt.]
System.Web.HttpRuntime.FirstRequestInit (HttpContext ngữ cảnh) 11.686.928 System.Web.HttpRuntime.EnsureFirstRequestInit (HttpContext ngữ cảnh) 141 System.Web.HttpRuntime.ProcessRequestNotificationPrivate (IIS7WorkerRequest wr, HttpContext ngữ cảnh) 4.863.749
CHỈNH SỬA SAU TRẢ LỜI: trong
của tôi giống như dưới đây: Application_Start
Global.asax
protected void Application_Start(object sender, EventArgs e)
{
Application["OnlineUsers"] = 0;
OnlineUsers.Update_SessionEnd_And_Online(
DateTime.Now,
false);
AddTask("DoStuff", 10);
}
Thủ tục lưu trữ đang được gọi là:
ALTER Procedure [dbo].[sp_OnlineUsers_Update_SessionEnd_And_Online]
@Session_End datetime,
@Online bit
As
Begin
Update OnlineUsers
SET
[Session_End] = @Session_End,
[Online] = @Online
End
Tôi có hai phương pháp để có được người dùng trực tuyến:
- sử dụng
Application["OnlineUsers"] = 0;
- một cái khác sử dụng cơ sở dữ liệu
Vì vậy, đối với phương pháp # 2, tôi đặt lại tất cả Người dùng trực tuyến tại Application_Start
. Có hơn 482.751 hồ sơ trong bảng đó.