Topic Tags:
no tags for this item
Rank: Seeker
Joined: 5/3/2010(UTC) Posts: 14
|
We are experiencing timeouts a bit too often. The timeouts seem to occur in the GetSueetieUserList() method which is run as soon as the system requests an avatar.
Is there anything we can do here?
[SqlException (0x80131904): Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.] System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +5064474 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() +234 System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error) +555 System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj) +390 System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket() +35 System.Data.SqlClient.TdsParserStateObject.ReadBuffer() +30 System.Data.SqlClient.TdsParserStateObject.ReadByte() +69 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +102 System.Data.SqlClient.SqlDataReader.ConsumeMetaData() +33 System.Data.SqlClient.SqlDataReader.get_MetaData() +86 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +311 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +987 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +162 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +32 System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +141 System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior) +70 Sueetie.Core.DbSueetieDataProvider.GetSueetieUserList(SueetieUserType sueetieUserType) in C:\SVN\Projects\Hästliv\Kod\source\Sueetie.Core\Providers\DbSueetieDataProvider.cs:402 Sueetie.Core.SueetieUsers.GetSueetieUserList(SueetieUserType sueetieUserType, Boolean useCachedUserList) in C:\SVN\Projects\Hästliv\Kod\source\Sueetie.Core\SueetieUsers.cs:133 Sueetie.Core.SueetieUsers.GetSueetieUserList(SueetieUserType sueetieUserType) in C:\SVN\Projects\Hästliv\Kod\source\Sueetie.Core\SueetieUsers.cs:121 Sueetie.Core.SueetieUsers.GetUserAvatarUrl(Int32 userID, Boolean useOriginalImage, Boolean useCachedAvatarRoot) in C:\SVN\Projects\Hästliv\Kod\source\Sueetie.Core\SueetieUsers.cs:278 Sueetie.Controls.UserAvatar.OnLoad(EventArgs e) in C:\SVN\Projects\Hästliv\Kod\source\Sueetie.Controls\Controls\UserAvatar.cs:72 System.Web.UI.Control.LoadRecursive() +74 System.Web.UI.Control.LoadRecursive() +146 System.Web.UI.Control.LoadRecursive() +146 System.Web.UI.Control.LoadRecursive() +146 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2207
Regards / Aki
|
|
|
|
|
|
Rank: Administration
Joined: 12/7/2008(UTC) Posts: 1,134   Thanks: 25 times Was thanked: 53 time(s) in 53 post(s)
|
MrNiap,
This hasn't come up before. Is it a shared host? Does it occur on multiple machines? How many users are we talking about? Is there restricted application memory pool? SQL Server database on a remote server?
The SueetieUserList is cached once retrieved in the form of a "SueetieThinUser" list consisting of minimal information (which includes avatar info) and of only active members. After that a trip to the database only occurs when the user retrieved is not active.
If anything else comes to mind or any environmental factors to question I'll post back.
Hope this resolves for you. -Dave
|
|
|
|
|
|
Rank: Administration
Joined: 12/7/2008(UTC) Posts: 1,134   Thanks: 25 times Was thanked: 53 time(s) in 53 post(s)
|
MrNiap,
One other issue is taking a look at the SQL Proc Sueetie_Users_Get. You'll notice it isn't a straight pull. We need to retrieve user properties from YAF, Analytics and elsewhere. You could try tweaking that proc by creating a table with indexing rather than query directly into a #tempUserTable. You could add an index to the UserID field of SuAnalytics_FilteredUsers, or even remove the analytics data query completely if not filtering anyone. You might also want to add an index to the yaf_user providerKey field, since that's another point of SQL processing.
Good luck, Dave
|
|
|
|
|
|
Rank: Seeker
Joined: 5/3/2010(UTC) Posts: 14
|
Thanks for your quick replies as usual. :)
It's hosted on shared server on discountasp.net. Not that many users yet so it should cause performace problems.
We have started to try to optimze the Proc.
Regards / Aki
|
|
|
|
|
|
| Users browsing this topic |
|
Guest
|
Forum Jump
You cannot post new topics in this forum.
You cannot reply to topics in this forum.
You cannot delete your posts in this forum.
You cannot edit your posts in this forum.
You cannot create polls in this forum.
You cannot vote in polls in this forum.