Mobil dosyalar için bir indirme sitesi olan web sitemde (günde 20000-60000) birçok kullanıcı var. Sunucuma uzaktan erişimim var (Windows Server 2008-R2).
Daha önce "Sunucu kullanılamıyor" hataları alıyorum, ancak şimdi bir bağlantı zaman aşımı hatası görüyorum.
Buna aşina değilim - neden ortaya çıkıyor ve nasıl düzeltebilirim?
Tam hata aşağıdadır:
'/' Uygulamasında Sunucu Hatası Zaman aşımı süresi doldu. İşlemin tamamlanmasından önce geçen zaman aşımı süresi veya sunucu yanıt vermiyor. Açıklama sona erdirildi. Açıklama: Geçerli web isteğinin yürütülmesi sırasında işlenmeyen bir özel durum oluştu. Hata ve kodun nereden kaynaklandığı hakkında daha fazla bilgi için lütfen yığın izlemesini inceleyin.
Özel Durum Ayrıntıları: System.Data.SqlClient.SqlException: Zaman aşımı süresi doldu. İşlemin tamamlanmasından önce geçen zaman aşımı süresi veya sunucu yanıt vermiyor. Açıklama sona erdirildi.
Kaynak Hatası:
Geçerli web isteğinin yürütülmesi sırasında işlenmeyen bir özel durum oluşturuldu. Kural dışı durumun kaynağı ve yeri ile ilgili bilgiler aşağıdaki kural dışı durum yığını izlemesi kullanılarak tanımlanabilir.
Yığın izleme:
[SqlException (0x80131904): Zaman aşımı süresi doldu. İşlemin tamamlanmasından önce geçen zaman aşımı süresi veya sunucu yanıt vermiyor. Deyim sonlandırıldı.]
System.Data.SqlClient.SqlConnection.OnError (SqlException istisnası, Boolean breakConnection) +404
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning () +412
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning ( ) +412 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning ( ) +412 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning () +412 System.Data.SqlClient.TdsParserBBserBRserBBser.Bhavior. , SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +1363
System.Data.SqlClient.SqlCommand.FinishExecuteReader (SqlDataReader1swuntime dsBhaviorDsbhaviorDsBhaviorDsBhaviorSs
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBehavior, RunBehavior runBehavior, Bool returnStream, Boolean async) +6389442
System.Data.SqlClient.SqlCommand.RunExecuteReader (commandBhavior, Davranış, Davranış, Davranış Davranısı 538
System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery (DbAsyncResult sonucu, Dize methodName, Boolean sendToPipe) +689
System.Data.SqlClient.SqlCommand.ExecuteNonQuery () +327
NovinMedia.Data.DbObjectPataNot.AdıAdreRun.AdıAdre , Int32 & rowsAffected) +209
DataLayer.OnlineUsers.Update_SessionEnd_And_Online (Object Session_End, Boolean Online) +440
NiceFileExplorer.Global.Application_Start (Nesne göndericisi, EventArgs e) +163[HttpException (0x80004005): Zaman aşımı süresi doldu. İşlemin tamamlanmasından önce geçen zaman aşımı süresi veya sunucu yanıt vermiyor. Deyim sonlandırıldı.]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode (HttpContext bağlamı, HttpApplication uygulaması) +4052053
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS (Intptr appContext, HttpContext hand.Con.Context.Context System
. yöntemi) InitSpecial (HttpApplicationState durumu, MethodInfo [] işleyicileri, IntPtr appContext, HttpContext bağlamı) +352
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance (IntPtr appContext, HttpContext bağlamı) +352 System.Web.HttpApplicationFactory.GetSpecialApplicationInstance (IntPtr appContext, HttpContext bağlamı) +407
System.Web.Hosting.PipelineRuntime.IntextizeAppAppContinConticonAppContinContinContextContextContik[HttpException (0x80004005): Zaman aşımı süresi doldu. İşlemin tamamlanmasından önce geçen zaman aşımı süresi veya sunucu yanıt vermiyor. Deyim sonlandırıldı.]
System.Web.HttpRuntime.FirstRequestInit (HttpContext bağlam) +11686928 System.Web.HttpRuntime.EnsureFirstRequestInit (HttpContextInit (HttpContext bağlamı) +11686928 System.Web.HttpRuntime.EnsureFirstRequestInit (HttpContextInit (HttpContext bağlamı) +11686928 System.Web.HttpRuntime.EnsureFirstRequestInit (HttpContextIntext) +141 System.Web.HttpRuntime.ProcessRequestNotificationPrivate (IIS7Worker bağlamı)
CEVAP SONRA DÜZENLEME:
Benim Application_Start
de Global.asax
aşağıda gibidir:
protected void Application_Start(object sender, EventArgs e)
{
Application["OnlineUsers"] = 0;
OnlineUsers.Update_SessionEnd_And_Online(
DateTime.Now,
false);
AddTask("DoStuff", 10);
}
Aranan saklı yordam:
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
Çevrimiçi kullanıcıları almak için iki yöntemim var:
- kullanma
Application["OnlineUsers"] = 0;
- diğeri veritabanı kullanıyor
Bu nedenle, yöntem # 2 için adresindeki tüm Çevrimiçi Kullanıcıları sıfırladım Application_Start
. Bu tabloda 482.751'den fazla kayıt bulunmaktadır.