SaaS CMS has officially launched! Learn more now.

Performance of netQuickSearchByExternalUrl and urlrewriter

Vote:
 

On a large site (40 country sites and  running episerver 5 R2 we are sometimes seeing slow requests. It looks like the time is spent somewhere in one or more http modules since the rendering of the actual page is pretty fast. Trying to get to the root of the problem I installed the SqlClientLogger and I am seeing the following stacktrace occur regullary. 
netQuickSearchByExternalUrl @Url=~/assets/graphics/somegraphic at System.Data.Common.DbCommand.ExecuteReader() at EPiServer.DataAccess.AbstractCommand.ExecuteReader(Int32 resultSetCount) at EPiServer.DataAccess.AbstractCommand.ExecuteReader() at EPiServer.DataAccess.PageQuickSearchDB.<>c__DisplayClass8.<FindByExternalUrl>b__7() at EPiServer.DataAccess.DataAccessBase.<>c__DisplayClass7.<Execute>b__6() at EPiServer.DataAccess.DatabaseFactory.Execute[TResult](Action`1 method) at EPiServer.DataAccess.DataAccessBase.Execute(Action action) at EPiServer.DataAccess.PageQuickSearchDB.FindByExternalUrl(String path) at EPiServer.Web.SimpleAddress.SimpleAddressToInternal(UrlBuilder url, Object& internalObject) at EPiServer.Web.FriendlyUrlRewriteProvider.ConvertToInternalInternal(UrlBuilder url, Object& internalObject) at EPiServer.Web.FriendlyUrlRewriteProvider.ConvertToInternal(UrlBuilder url, Object& internalObject) at FooBarFriendlyUrlRewriteProvider.ConvertToInternal(UrlBuilder& url, Object& internalObject) at FooBarFriendlyUrlRewriteProvider.ConvertToInternal(UrlBuilder url, Object& internalObject) at EPiServer.Web.UrlRewriteModule.HttpUrlRewriteToInternal(UrlBuilder url) at EPiServer.Web.UrlRewriteModuleBase.BeginRequestEventHandler(Object sender, EventArgs e) at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) at System.Web.HttpApplication.ApplicationStepManager.ResumeSteps(Exception error) at System.Web.HttpApplication.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) at System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) at System.Web.HttpRuntime.ProcessRequestNoDemand(HttpWorkerRequest wr) at System.Web.Hosting.ISAPIRuntime.ProcessRequest(IntPtr ecb, Int32 iWRType)
793 ms
so it looks like executing netQuickSearchByExternalUrl has taken 793ms and it's being called from EPiServer.Web.FriendlyUrlRewriteProvider.ConvertToInternalInternal. The strange/stupid thing is that it never returns a resultset for the URL's it's trying to resolve so calling it is useless to begin with. My questions are:
a) has anybody seen this before?
b) how can I prevent netQuickSearchByExternalUrl from being called for these requests (without disabling the urlrewriter entirely)
c) how can I improve the performance of netQuickSearchByExternalUrl

On a large site (40 country sites and  running episerver 5 R2 we are sometimes seeing slow requests. It looks like the time is spent somewhere in one or more http modules since the rendering of the actual page is pretty fast. Trying to get to the root of the problem I installed the SqlClientLogger and I am seeing the following stacktrace occur regullary. 


netQuickSearchByExternalUrl @Url=~/assets/graphics/somegraphic at System.Data.Common.DbCommand.ExecuteReader() at EPiServer.DataAccess.AbstractCommand.ExecuteReader(Int32 resultSetCount) at EPiServer.DataAccess.AbstractCommand.ExecuteReader() at EPiServer.DataAccess.PageQuickSearchDB.<>c__DisplayClass8.<FindByExternalUrl>b__7() at EPiServer.DataAccess.DataAccessBase.<>c__DisplayClass7.<Execute>b__6() at EPiServer.DataAccess.DatabaseFactory.Execute[TResult](Action`1 method) at EPiServer.DataAccess.DataAccessBase.Execute(Action action) at EPiServer.DataAccess.PageQuickSearchDB.FindByExternalUrl(String path) at EPiServer.Web.SimpleAddress.SimpleAddressToInternal(UrlBuilder url, Object& internalObject) at EPiServer.Web.FriendlyUrlRewriteProvider.ConvertToInternalInternal(UrlBuilder url, Object& internalObject) at EPiServer.Web.FriendlyUrlRewriteProvider.ConvertToInternal(UrlBuilder url, Object& internalObject) at FooBarFriendlyUrlRewriteProvider.ConvertToInternal(UrlBuilder& url, Object& internalObject) at FooBarFriendlyUrlRewriteProvider.ConvertToInternal(UrlBuilder url, Object& internalObject) at EPiServer.Web.UrlRewriteModule.HttpUrlRewriteToInternal(UrlBuilder url) at EPiServer.Web.UrlRewriteModuleBase.BeginRequestEventHandler(Object sender, EventArgs e) at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) at System.Web.HttpApplication.ApplicationStepManager.ResumeSteps(Exception error) at System.Web.HttpApplication.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) at System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) at System.Web.HttpRuntime.ProcessRequestNoDemand(HttpWorkerRequest wr) at System.Web.Hosting.ISAPIRuntime.ProcessRequest(IntPtr ecb, Int32 iWRType)
793 ms

so it looks like executing netQuickSearchByExternalUrl has taken 793ms and it's being called from EPiServer.Web.FriendlyUrlRewriteProvider.ConvertToInternalInternal. The strange/stupid thing is that it never returns a resultset for the URL's it's trying to resolve so calling it is useless to begin with. My questions are:

a) has anybody seen this before?

b) how can I prevent netQuickSearchByExternalUrl from being called for these requests (without disabling the urlrewriter entirely)?

c) how can I improve the performance of netQuickSearchByExternalUrl?

#47653
Feb 07, 2011 11:42
Vote:
 

There is a setting enableSimpleAddress on the provider line, and that will turn of the shortcut urls

#47654
Feb 07, 2011 13:06
This topic was created over six months ago and has been resolved. If you have a similar question, please create a new topic and refer to this one.
* You are NOT allowed to include any hyperlinks in the post because your account hasn't associated to your company. User profile should be updated.