我已經託管我的網站rackspace雲服務器。有時得到超時過期異常與Linq EF和服務器重新啓動後,它工作正常
有時我從數據庫中獲取記錄時遇到以下異常。奇怪的是,重啓後幾天內一切正常,我也只在少數幾個地方得到這個異常,而不是在任何地方。
Exception: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
Stack Trace:
[SqlException (0x80131904): Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.]
System.Data.SqlClient.SqlConnection.OnError(SqlException exception, 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.SqlDataReader.ConsumeMetaData() +59
System.Data.SqlClient.SqlDataReader.get_MetaData() +118
System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +6387937
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +6389506
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +538
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +28
System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +256
System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) +19
System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior) +553
[EntityCommandExecutionException: An error occurred while executing the command definition. See the inner exception for details.]
DataAccessLayer.dbCustomer.CompanyCustomerByLocationId(String sortExpression, Boolean asc, String nameSearchString, Int32 startRowIndex, Int32 maximumRows, Int32& TotalRecord, Int64 companyId) in D:\Dotnet Projects\FutureZoom\FutureZoom\DataAccessLayer\dbCustomer.cs:508
BusinessLogic.Customer.CompanyCustomerByLocationId(String sortExpression, Boolean asc, String nameSearchString, Int32 startRowIndex, Int32 maximumRows, Int64 CompanyId) in D:\Dotnet Projects\FutureZoom\FutureZoom\BusinessLogic\Customer.cs:431
FutureZoom.Areas.Admin.Controllers.CompanyController.CustomerPaging(Int32 StartIndex, Int32 PageSize, String SortExp, Boolean Asc, String SearchExp, String Where) in D:\Dotnet Projects\FutureZoom\FutureZoom\FutureZoom\Areas\Admin\Controllers\CompanyController.cs:552
lambda_method(Closure , ControllerBase , Object[]) +362
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +248
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +39
System.Web.Mvc.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12() +125
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +640
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +312
System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +691
System.Web.Mvc.Controller.ExecuteCore() +162
System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +305
System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__5() +62
System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +20
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +469
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +375
我的LINQ查詢下面
query = context.Customers.Include("Company").Include("Company.EmailCampaignerStatus")
.OrderBy(m => m.EmailCampaignerStatus.FirstOrDefault().CreatedOn)
.Where(m => m.FirstName.StartsWith(name) || m.LastName.StartsWith(name) || m.Email.StartsWith(name) || (m.FirstName + " " + m.LastName).StartsWith(name))
.Where(m => m.CompanyId == companyId)
.Where(m => m.CompanyLocationId == locationId)
.Skip(startRowIndex == 0 ? startRowIndex : startRowIndex - 1)
.Take(maximumRows)
.ToList();
執行時間提到這個查詢是不是我的本地機器上,甚至1秒,同時在服務器端重新啓動後相同,但執行時間增加一天白天,並在幾天後執行失敗(有時會失敗,有時會給出結果)。
我觀察到它花了31.05秒並失敗,它花費了51.09秒並失敗。有時需要2分鐘以上才能得出結果。
我和機架空間的人交談過,但他們無法追蹤相同的原因。
編輯1:我看到下面的SQL事件探查器查詢對我的分頁查詢
SELECT
[Project3].[Id1] AS [Id],
[Project3].[C1] AS [C1],
[Project3].[Id] AS [Id1],
[Project3].[CompanyId] AS [CompanyId],
[Project3].[CompanyLocationId] AS [CompanyLocationId],
[Project3].[FirstName] AS [FirstName],
[Project3].[LastName] AS [LastName],
[Project3].[Email] AS [Email],
[Project3].[Address1] AS [Address1],
[Project3].[Address2] AS [Address2],
[Project3].[City] AS [City],
[Project3].[State] AS [State],
[Project3].[Country] AS [Country],
[Project3].[Zip] AS [Zip],
[Project3].[Phone] AS [Phone],
[Project3].[SaleDate] AS [SaleDate],
[Project3].[Notes] AS [Notes],
[Project3].[Cost] AS [Cost],
[Project3].[CreatedOn] AS [CreatedOn],
[Project3].[ModifiedOn] AS [ModifiedOn],
[Project3].[PrimaryReviewSiteId] AS [PrimaryReviewSiteId],
[Project3].[Id2] AS [Id2],
[Project3].[SubscriptionTypeId] AS [SubscriptionTypeId],
[Project3].[PlanFeeAmount] AS [PlanFeeAmount],
[Project3].[LoginId] AS [LoginId],
[Project3].[IndustryTypeId] AS [IndustryTypeId],
[Project3].[CompanyName] AS [CompanyName],
[Project3].[NumberOfLocations] AS [NumberOfLocations],
[Project3].[LogoImageName] AS [LogoImageName],
[Project3].[WebsiteUrl] AS [WebsiteUrl],
[Project3].[blsActive] AS [blsActive],
[Project3].[Pending] AS [Pending],
[Project3].[ExpiryDate] AS [ExpiryDate],
[Project3].[C2] AS [C2],
[Project3].[Id3] AS [Id3],
[Project3].[UploadTicketId] AS [UploadTicketId],
[Project3].[UploadStatus] AS [UploadStatus],
[Project3].[CompanyId1] AS [CompanyId1],
[Project3].[CompanyLocationId1] AS [CompanyLocationId1],
[Project3].[CustomerId] AS [CustomerId],
[Project3].[CreatedOn2] AS [CreatedOn1]
FROM (SELECT
[Limit2].[Id] AS [Id],
[Limit2].[CompanyId] AS [CompanyId],
[Limit2].[CompanyLocationId] AS [CompanyLocationId],
[Limit2].[FirstName] AS [FirstName],
[Limit2].[LastName] AS [LastName],
[Limit2].[Email] AS [Email],
[Limit2].[Address1] AS [Address1],
[Limit2].[Address2] AS [Address2],
[Limit2].[City] AS [City],
[Limit2].[State] AS [State],
[Limit2].[Country] AS [Country],
[Limit2].[Zip] AS [Zip],
[Limit2].[Phone] AS [Phone],
[Limit2].[SaleDate] AS [SaleDate],
[Limit2].[Notes] AS [Notes],
[Limit2].[Cost] AS [Cost],
[Limit2].[CreatedOn] AS [CreatedOn],
[Limit2].[ModifiedOn] AS [ModifiedOn],
[Limit2].[PrimaryReviewSiteId] AS [PrimaryReviewSiteId],
[Limit2].[Id1] AS [Id1],
[Limit2].[CreatedOn1] AS [CreatedOn1],
[Limit2].[Id2] AS [Id2],
[Limit2].[SubscriptionTypeId] AS [SubscriptionTypeId],
[Limit2].[PlanFeeAmount] AS [PlanFeeAmount],
[Limit2].[LoginId] AS [LoginId],
[Limit2].[IndustryTypeId] AS [IndustryTypeId],
[Limit2].[CompanyName] AS [CompanyName],
[Limit2].[NumberOfLocations] AS [NumberOfLocations],
[Limit2].[WebsiteUrl] AS [WebsiteUrl],
[Limit2].[blsActive] AS [blsActive],
[Limit2].[Pending] AS [Pending],
[Limit2].[ExpiryDate] AS [ExpiryDate],
[Limit2].[LogoImageName] AS [LogoImageName],
[Limit2].[C1] AS [C1],
[Extent4].[Id] AS [Id3],
[Extent4].[UploadTicketId] AS [UploadTicketId],
[Extent4].[UploadStatus] AS [UploadStatus],
[Extent4].[CompanyId] AS [CompanyId1],
[Extent4].[CompanyLocationId] AS [CompanyLocationId1],
[Extent4].[CustomerId] AS [CustomerId],
[Extent4].[CreatedOn] AS [CreatedOn2],
CASE WHEN ([Extent4].[Id] IS NULL) THEN CAST(NULL AS int) ELSE 1 END AS [C2]
FROM (SELECT TOP (20) [Project2].[Id] AS [Id], [Project2].[CompanyId] AS [CompanyId], [Project2].[CompanyLocationId] AS [CompanyLocationId], [Project2].[FirstName] AS [FirstName], [Project2].[LastName] AS [LastName], [Project2].[Email] AS [Email], [Project2].[Address1] AS [Address1], [Project2].[Address2] AS [Address2], [Project2].[City] AS [City], [Project2].[State] AS [State], [Project2].[Country] AS [Country], [Project2].[Zip] AS [Zip], [Project2].[Phone] AS [Phone], [Project2].[SaleDate] AS [SaleDate], [Project2].[Notes] AS [Notes], [Project2].[Cost] AS [Cost], [Project2].[CreatedOn] AS [CreatedOn], [Project2].[ModifiedOn] AS [ModifiedOn], [Project2].[PrimaryReviewSiteId] AS [PrimaryReviewSiteId], [Project2].[Id1] AS [Id1], [Project2].[CreatedOn1] AS [CreatedOn1], [Project2].[Id2] AS [Id2], [Project2].[SubscriptionTypeId] AS [SubscriptionTypeId], [Project2].[PlanFeeAmount] AS [PlanFeeAmount], [Project2].[LoginId] AS [LoginId], [Project2].[IndustryTypeId] AS [IndustryTypeId], [Project2].[CompanyName] AS [CompanyName], [Project2].[NumberOfLocations] AS [NumberOfLocations], [Project2].[WebsiteUrl] AS [WebsiteUrl], [Project2].[blsActive] AS [blsActive], [Project2].[Pending] AS [Pending], [Project2].[ExpiryDate] AS [ExpiryDate], [Project2].[LogoImageName] AS [LogoImageName], [Project2].[C1] AS [C1]
FROM (SELECT [Project2].[Id] AS [Id], [Project2].[CompanyId] AS [CompanyId], [Project2].[CompanyLocationId] AS [CompanyLocationId], [Project2].[FirstName] AS [FirstName], [Project2].[LastName] AS [LastName], [Project2].[Email] AS [Email], [Project2].[Address1] AS [Address1], [Project2].[Address2] AS [Address2], [Project2].[City] AS [City], [Project2].[State] AS [State], [Project2].[Country] AS [Country], [Project2].[Zip] AS [Zip], [Project2].[Phone] AS [Phone], [Project2].[SaleDate] AS [SaleDate], [Project2].[Notes] AS [Notes], [Project2].[Cost] AS [Cost], [Project2].[CreatedOn] AS [CreatedOn], [Project2].[ModifiedOn] AS [ModifiedOn], [Project2].[PrimaryReviewSiteId] AS [PrimaryReviewSiteId], [Project2].[Id1] AS [Id1], [Project2].[CreatedOn1] AS [CreatedOn1], [Project2].[Id2] AS [Id2], [Project2].[SubscriptionTypeId] AS [SubscriptionTypeId], [Project2].[PlanFeeAmount] AS [PlanFeeAmount], [Project2].[LoginId] AS [LoginId], [Project2].[IndustryTypeId] AS [IndustryTypeId], [Project2].[CompanyName] AS [CompanyName], [Project2].[NumberOfLocations] AS [NumberOfLocations], [Project2].[WebsiteUrl] AS [WebsiteUrl], [Project2].[blsActive] AS [blsActive], [Project2].[Pending] AS [Pending], [Project2].[ExpiryDate] AS [ExpiryDate], [Project2].[LogoImageName] AS [LogoImageName], [Project2].[C1] AS [C1], row_number() OVER (ORDER BY [Project2].[CreatedOn1] ASC) AS [row_number]
FROM (SELECT
[Filter1].[Id] AS [Id],
[Filter1].[CompanyId] AS [CompanyId],
[Filter1].[CompanyLocationId] AS [CompanyLocationId],
[Filter1].[FirstName] AS [FirstName],
[Filter1].[LastName] AS [LastName],
[Filter1].[Email] AS [Email],
[Filter1].[Address1] AS [Address1],
[Filter1].[Address2] AS [Address2],
[Filter1].[City] AS [City],
[Filter1].[State] AS [State],
[Filter1].[Country] AS [Country],
[Filter1].[Zip] AS [Zip],
[Filter1].[Phone] AS [Phone],
[Filter1].[SaleDate] AS [SaleDate],
[Filter1].[Notes] AS [Notes],
[Filter1].[Cost] AS [Cost],
[Filter1].[CreatedOn] AS [CreatedOn],
[Filter1].[ModifiedOn] AS [ModifiedOn],
[Filter1].[PrimaryReviewSiteId] AS [PrimaryReviewSiteId],
[Limit1].[Id] AS [Id1],
[Limit1].[CreatedOn] AS [CreatedOn1],
[Extent3].[Id] AS [Id2],
[Extent3].[SubscriptionTypeId] AS [SubscriptionTypeId],
[Extent3].[PlanFeeAmount] AS [PlanFeeAmount],
[Extent3].[LoginId] AS [LoginId],
[Extent3].[IndustryTypeId] AS [IndustryTypeId],
[Extent3].[CompanyName] AS [CompanyName],
[Extent3].[NumberOfLocations] AS [NumberOfLocations],
[Extent3].[WebsiteUrl] AS [WebsiteUrl],
[Extent3].[blsActive] AS [blsActive],
[Extent3].[Pending] AS [Pending],
[Extent3].[ExpiryDate] AS [ExpiryDate],
[Extent3].[LogoImageName] AS [LogoImageName],
1 AS [C1]
FROM (SELECT [Extent1].[Id] AS [Id], [Extent1].[CompanyId] AS [CompanyId], [Extent1].[CompanyLocationId] AS [CompanyLocationId], [Extent1].[FirstName] AS [FirstName], [Extent1].[LastName] AS [LastName], [Extent1].[Email] AS [Email], [Extent1].[Address1] AS [Address1], [Extent1].[Address2] AS [Address2], [Extent1].[City] AS [City], [Extent1].[State] AS [State], [Extent1].[Country] AS [Country], [Extent1].[Zip] AS [Zip], [Extent1].[Phone] AS [Phone], [Extent1].[SaleDate] AS [SaleDate], [Extent1].[Notes] AS [Notes], [Extent1].[Cost] AS [Cost], [Extent1].[CreatedOn] AS [CreatedOn], [Extent1].[ModifiedOn] AS [ModifiedOn], [Extent1].[PrimaryReviewSiteId] AS [PrimaryReviewSiteId]
FROM [dbo].[Customer] AS [Extent1]
WHERE (([Extent1].[FirstName] LIKE @p__linq__0 ESCAPE N'~') OR ([Extent1].[LastName] LIKE @p__linq__1 ESCAPE N'~') OR ([Extent1].[Email] LIKE @p__linq__2 ESCAPE N'~') OR ([Extent1].[FirstName] + N' ' + [Extent1].[LastName] LIKE @p__linq__3 ESCAPE N'~')) AND ([Extent1].[CompanyId] = @p__linq__4) AND ([Extent1].[CompanyLocationId] = @p__linq__5)) AS [Filter1]
OUTER APPLY (SELECT TOP (1)
[Extent2].[Id] AS [Id],
[Extent2].[CreatedOn] AS [CreatedOn]
FROM [dbo].[EmailCampaignerStatus] AS [Extent2]
WHERE [Filter1].[Id] = [Extent2].[CustomerId]) AS [Limit1]
LEFT OUTER JOIN [dbo].[Company] AS [Extent3] ON [Filter1].[CompanyId] = [Extent3].[Id]
) AS [Project2]
) AS [Project2]
WHERE [Project2].[row_number] > 0
ORDER BY [Project2].[CreatedOn1] ASC) AS [Limit2]
LEFT OUTER JOIN [dbo].[EmailCampaignerStatus] AS [Extent4] ON [Limit2].[CompanyId] = [Extent4].[CompanyId]
) AS [Project3]
ORDER BY [Project3].[CreatedOn1] ASC, [Project3].[Id1] ASC, [Project3].[Id] ASC, [Project3].[Id2] ASC, [Project3].[C2] ASC
SELECT
[GroupBy1].[A1] AS [C1]
FROM (SELECT
COUNT(1) AS [A1]
FROM [dbo].[Customer] AS [Extent1]
WHERE (([Extent1].[FirstName] LIKE @p__linq__0 ESCAPE N'~') OR ([Extent1].[LastName] LIKE @p__linq__1 ESCAPE N'~') OR ([Extent1].[Email] LIKE @p__linq__2 ESCAPE N'~') OR ([Extent1].[FirstName] + N' ' + [Extent1].[LastName] LIKE @p__linq__3 ESCAPE N'~')) AND ([Extent1].[CompanyId] = @p__linq__4) AND ([Extent1].[CompanyLocationId] = @p__linq__5)
) AS [GroupBy1]
SELECT
CASE WHEN (EXISTS (SELECT
1 AS [C1]
FROM [dbo].[CompanyReviewSites] AS [Extent1]
WHERE [Extent1].[CompanyLocationId] = @p__linq__0
)) THEN cast(1 as bit) WHEN (NOT EXISTS (SELECT
1 AS [C1]
FROM [dbo].[CompanyReviewSites] AS [Extent2]
WHERE [Extent2].[CompanyLocationId] = @p__linq__0
)) THEN cast(0 as bit) END AS [C1]
FROM (SELECT 1 AS X) AS [SingleRowTable1]
SELECT
1 AS [C1],
[Extent1].[Id] AS [Id],
[Extent1].[RiviewSiteId] AS [RiviewSiteId],
[Extent1].[URL] AS [URL],
[Extent1].[CompanyId] AS [CompanyId],
[Extent1].[CompanyLocationId] AS [CompanyLocationId],
[Extent2].[Id] AS [Id1],
[Extent2].[ReviewSiteName] AS [ReviewSiteName],
[Extent2].[ImageName] AS [ImageName]
FROM [dbo].[CompanyReviewSites] AS [Extent1]
INNER JOIN [dbo].[ReviewSites] AS [Extent2] ON [Extent1].[RiviewSiteId] = [Extent2].[Id]
WHERE [Extent1].[CompanyLocationId] = @p__linq__0
你看到這個線程http://stackoverflow.com/questions/1421978/help-troubleshooting-sqlexception-超時已過期未加載連接 – VJAI
已檢查,但沒有內存和預定作業(SQL代理作業)問題。我在機器上安裝了8GB RAM。 –
您使用SQL Server * Express *數據庫還是常規SQL Server版本? – Slauma