Forums

Skip Navigation LinksHome / Developer Network / Forums / Sitefinity Older Versions (3.x): Bugs & Issues > Issue: Performance

Issue: Performance

  • J.Hoventer Master avatar

    Posted on Jan 21, 2010 (permalink)

    Guys, I've brought this up before but it is becoming a concern.

    We just did a very basic test on the www.sitefinity.com site itself (the home page) and on average the page takes around 5.5 seconds to load. This performance is not within the ranges we expect.

    We then performed tests on DotNetNuke sites that we've done and compared it to Sitefinity sites that we've done. On the DNN side we're able to see average times of around 2 seconds, but we don't get close to that with Sitefinity.

    Debug mode is switched off, we've applied various performance tuning techniques in terms of IIS and so forth, but we're still not satisfied that Sitefinity is performing as it should.

    Is there any test tool or advice that anyone can guide us with?

    Regards,
    Jacques

    Reply

  • Ivan Dimitrov Ivan Dimitrov admin's avatar

    Posted on Jan 21, 2010 (permalink)

    Hello J.Hov,

    You can use HTTP WATCH to observe the requests that are made and the server time responding.

    Sincerely yours,
    Ivan Dimitrov
    the Telerik team

    Instantly find answers to your questions on the new Telerik Support Portal.
    Watch a video on how to optimize your support resource searches and check out more tips on the blogs.

    Reply

  • J.Hoventer Master avatar

    Posted on Jan 21, 2010 (permalink)

    Hi Ivan....

    We use Fiddler which I'm sure is somewhat similar, but there's still very little that can be done.

    A) The file sizes are within the norms
    B) These are dual servers running Windows Server 2003 in an NLB configuration with 2Gb of memory each and enough processing power and then some.
    C) Debug mode is off
    D) The server is configured to optimize application pool usage
    E) Compression in IIS is off due to Proxy Server isses (this shouldn't matter however, since the average Kb being downloaded for cached pages is 50kb.

    These pages are taking on average 5 seconds and more to load... this size page should at the very least load below 2 seconds. What's worse is that the Media page that uses the News module takes around 15 seconds on average. This is excruciating.

    The client offered to upgrade both servers and add an extra 2Gb on each server, but I refused because that is certainly not the answer. 2 Servers cannot possibly deliver an Asp.net application with such bad performance.

    Is there any more guidance you can offer. Perhaps there's someone else out there besides the Sitefinity staff who can offer some insight?

    Regards,
    Jacques

    Reply

  • Ivan Dimitrov Ivan Dimitrov admin's avatar

    Posted on Jan 21, 2010 (permalink)

    Hello J.Hov,

    What fiddler shows? Which is the most time consuming response? Are you able to use RadCompression and ViewState compression? If you add RasScriptManager and RadStylesheetManagers does this helps ? The last few should increase perfomance and decrease the bandwidth as well.

    All the best,
    Ivan Dimitrov
    the Telerik team

    Instantly find answers to your questions on the new Telerik Support Portal.
    Watch a video on how to optimize your support resource searches and check out more tips on the blogs.

    Reply

  • J.Hoventer Master avatar

    Posted on Jan 22, 2010 (permalink)

    Hi Ivan,

    Fiddler shows that, after the initial assets are cached on the client side we have basically two files that get downloaded. One of around 40Kb the other of around 7Kb. This takes on Average 3-5 seconds to load. (Way above what we expect.

    I found this document on your site:  http://www.sitefinity.com/support/kb/sitefinity-3-x/optimizing-performance-on-sitefinity-web-site.aspx
    Only problem is that it's specifically for Sitefinity 3.2 and the web.config sections mentioned are incorrect in 3.6. Where can I find a document that will describe the InMemory caching settings but for Sitefinity 3.6?

    I will also look into your other suggestions of RadCompressions and Viewstate compression, but based on the Kb currently being sent back and forth I don't think the problem is with what is being rendered out to the browser. It can only be one of two things Hardware (network and servers) or a problem in Sitefinity itself. Network and servers are being checked, but so far there is no problems, which leaves Sitefinity.

    Regards,
    Jacques

    Reply

  • Ivan Dimitrov Ivan Dimitrov admin's avatar

    Posted on Jan 22, 2010 (permalink)

    Hello J.Hov,

    The section is located under telerik/framework/caching of the web.config file

    <caching defaultProvider="memoryCache">
        <providers>
            <add name="memoryCache" type="Telerik.Caching.MemoryCachingProvider, Telerik.Framework"/>
            <add name="ASPNET" type="Telerik.Caching.AspNetCachingProvider, Telerik.Framework" duration="120" slidingExpiration="true"/>
        </providers>
        <cacheDependency mode="InDatabase" checkExpriredInterval="10"/>
    </caching>


    Kind regards,
    Ivan Dimitrov
    the Telerik team

    Instantly find answers to your questions on the new Telerik Support Portal.
    Watch a video on how to optimize your support resource searches and check out more tips on the blogs.

    Reply

  • J.Hoventer Master avatar

    Posted on Jan 22, 2010 (permalink)

    <caching defaultProvider="memoryCache"
            <providers> 
              <add name="memoryCache" type="Telerik.Caching.MemoryCachingProvider, Telerik.Framework" /> 
              <add name="ASPNET" type="Telerik.Caching.AspNetCachingProvider, Telerik.Framework" duration="120" slidingExpiration="true" /> 
            </providers> 
            <cacheDependency mode="InDatabase" /> 
          </caching> 

    Here is the section for caching in our project.

    I see a memoryCache provider, ASPNET provider and another cacheDependency set to InDatabase.

    The default provider is set to memoryCache.

    So what does this mean is Sitefinity using memory, Asp.net or Database caching?

    Regards,
    Jacques

    Reply

  • Ivan Dimitrov Ivan Dimitrov admin's avatar

    Posted on Jan 22, 2010 (permalink)

    Hi J.Hov,

    CacheDependency and achingProvider are two different things. CacheDependency is used when you make some changes to any object, and then re-request it, the cache will be invalidated and refreshed.
    CacheDependency class looks for dependency relationships it should not affect the provider.

    InDatabase is used generaly in a load balanced environment.
    For cacheDependency you can use only three modes

    - InMemory
    - InDatabase
    - Custom

    When you use Load Balanced environment it is recommended to use InDatabase mode otherwise you may have synchronization problems When cacheDependency mode="InDatabase" the caching triggers will be saved in the database - [sf_DbCacheDependency] table, so they will be available to all servers at any time.
     Generally the table stores data about invalidated and refreshed events when an object is requested.

    You may find the following article useful - Performance Optimizations - Why Output Cache is Important

    Best wishes,
    Ivan Dimitrov
    the Telerik team

    Instantly find answers to your questions on the new Telerik Support Portal.
    Watch a video on how to optimize your support resource searches and check out more tips on the blogs.

    Reply

  • J.Hoventer Master avatar

    Posted on Jan 22, 2010 (permalink)

    Hi Ivan,

    I feel like I'm running around in circles.

    We have a network load balanced scenario so it seems the faster InMemory caching is not an option for us. Although, that link I sent in my previous post points to there being workarounds for this. Your latest post didn't seem to say that.

    The process of elimination is rather simple and clear to me.
    1. Page assets (images, flash, css, js) are being cached on the client machine effectively
    2. The size of the items that are not cached are virtually nothing. Around 45Kb
    3. There are more than enough resources in terms of Dual Windows Server 2003 servers with ample memory and processing power.
    4. The servers are run in Virtual environments on IBM machines and I'm not totally sure but I think the link between that machine and the Oracle 10g server is either fibre or 1Gb copper

    Basically what I'm getting at is that everything seems to be pointing to Sitefinity being the problem. We did some basic tests on your own http://www.sitefinity.com site and it's slow. Pages average around 5 seconds load time. At least that might be accounted for by the fact that there are multiple users accessing your site at the same time. Our tests on our own environment are currently tests being run as a SINGLE user.

    The most unforgiving of all this is the News Module.... http://demo.thedominion.ca/MediaCentre/MediaSummaries.aspx?Year=2009
    That links to our development environment where the new site is being built. All the media centre pages take around 13-17 seconds to load! This is not acceptable by any standards.

    Please, PLEASE can you guys give us any better indication of any performance problems with Sitefinity? Perhaps Nolics isn't working well with Oracle? Perhaps there is something wrong in Sitefinity in terms of building dynamic pages? There has to be a perfectly logical answer for this!

    Honestly I wish it was something as simple as a configuration problem, or a hardware fault, because it would restore my trust in Sitefinity, but so far we've not been able to find anything that would indicate such problems.

    Regards,
    Jacques

    Reply

  • Ivan Dimitrov Ivan Dimitrov admin's avatar

    Posted on Jan 22, 2010 (permalink)

    Hi J.Hov,

    1. By default pages use ASPNET caching. If you want you can create your own caching provider and use it with pages. However I believe that you have enabled page caching through backend UI.

    <cms defaultProvider="Sitefinity" pageExtension=".aspx" redirectToHomePage="false" projectName="TEST" disabled="false" pageEditorUIMode="Overlay">
                <providers>
                    <clear/>
                    <add connectionStringName="DefaultConnection" allowPageHistory="true"  allowPageWorkflow="False" cachingProviderName="ASPNET" name="Sitefinity" type="Telerik.Cms.Data.DefaultProvider, Telerik.Cms.Data"/>
                </providers>

    In the following section called caching you set caching duration ( in seconds) and slidingExpiration.

    <caching defaultProvider="memoryCache">
        <providers>
            <add name="memoryCache" type="Telerik.Caching.MemoryCachingProvider, Telerik.Framework"/>
            <add name="ASPNET" type="Telerik.Caching.AspNetCachingProvider, Telerik.Framework" duration="120" slidingExpiration="true"/>
        </providers>
        <cacheDependency mode="InDatabase" checkExpriredInterval="1000"/>
    </caching>

    slidingExpiration - The data will remain in the cache until two minutes passes without anything referencing it.
    Required. Time, in seconds, the page should be cached. Must be a positive integer.

    Generally everything is standard ASP.NET implementation.

    The following articles described everything about ASP.NET caching

    ASP.NET Caching Features
    ASP.NET Caching
    ASP.NET Caching: Techniques and Best Practices

    Anyway, the problem with your pages comes from the server. There is a duration during returning the request from a server once a page is called. So when I request a page there is about 3-6 seconds that I am waiting for a response message from the server.

    Generally when a page is accessed for the first time it opens slowly, but it goes to the ASP.NET Memory cache and then after the second request the response is faster. My test ( which is attached ) shows that I receive the second, third and fourth request are faster. If one of the next request is handled by not the same server ( I suppose you have two servers in load balance)  the response will be slower again.

    The attached xml includes report for the response time of http://demo.thedominion.ca/MediaCentre/MediaSummaries.aspx?Year=2009 at our end. The check is made with HTTP WATCH. This is what we could say for now.

    Kind regards,
    Ivan Dimitrov
    the Telerik team

    Instantly find answers to your questions on the new Telerik Support Portal.
    Watch a video on how to optimize your support resource searches and check out more tips on the blogs.
    Attached files

    Reply

  • J.Hoventer Master avatar

    Posted on Jan 25, 2010 (permalink)

    Hi Ivan,

    There seems to be two points to your response.

    1. Our current caching is set to ASpNet as apposed to InDatabase as I thought.
    Questions:
    a) Is this due to the fact that in the CMS node cachingProviderName is set to ASPNET?
    b) Would we see any performance gains by setting this to InDatabase?
    c) The optimal performance would obviously be InMemory, but we have an NLB configuration. Is it still possible to have things cached in memory or is this not advisable at all?

    2. Your tests you did with HTTP Watch... You said the following: "Anyway, the problem with your pages comes from the server. There is a duration during returning the request from a server once a page is called."
    You seem to be saying that the problem is on the server end in terms of... A request is made then there's a long pause before a response is given. What other reasons can there be for this? We've tuned the performance in as many areas as we're used to and yet we're still getting a 16 second delay with the news page. (This is after the page has already been accessed).
    The process to me as is follows: User enters URL, DNS is resolved, request is sent, server executes and builds the page, response is sent, browser renders results. Because of other pages response times and that of the news section it would seem to me that the problem is more the part where the server has to execute and build the page. If it was a DNS issue we'd experience the same massive delays with all pages which isn't the case. The request being sent is unlikely the cause as is the response sent back to the user since most of the data is cached on the client browser already. This leaves the building of the page:
    a) Can this be an issue with the connection speed to the Oracle server?
    b) What else can this be?
    c) Are there any other tests that can pinpoint exactly where the problem is coming from (I.e. Asp.net trace information, database connectivity, etc. )

    We, as well as our clients, are not comfortable with the performance of this Sitefinity implementation and we're trying to work with you guys towards a resolution. I sincerely hope we can find one.

    We do appreciate your help.

    Regards,
    Jacques

    Reply

  • J.Hoventer Master avatar

    Posted on Jan 25, 2010 (permalink)

    Hi Ivan,

    Here's one more bit of information which may help us: We switched on tracing in Asp.net and discovered the following:

    aspx.page Begin LoadComplete 0.132266340758066 0.000051
    aspx.page End LoadComplete 0.135508119158349 0.003242
    aspx.page Begin PreRender 0.13553416555613 0.000026
    aspx.page End PreRender 16.3043021394834 16.168768
    aspx.page Begin PreRenderComplete 16.3043594273256 0.000057

    So it seems on End Prerender or perhaps the Being PreRender part is where the delay is coming in.

    Does this point to anything useful?

    Regards
    Jacques

    Reply

  • J.Hoventer Master avatar

    Posted on Jan 25, 2010 (permalink)

    Hi Ivan,

    Here's another follow up.

    We connected to the clients network via VPN and noticed a remarkable albeit intermittent change in performance.

    If I go to the media centre, spefically to the page which filters news to 2009 articles, it takes around 13 seconds on the initial request, but then the following requests are served in under a second, but that's only for that page.

    If I click through each of the pages (filters for each year) then the same behavior is noted. Initial page load is around 13 seconds, subsequent loads under a second.

    Once I've gone through all the 'year' pages, I can flick between them at top speed, but the strangest thing is that if I leave the browser for a minute or two, all those pages have to redo the 13 seconds again.

    The oddest part of this behavior is that all these pages actually point to the exact same page: http://demo.thedominion.ca/MediaCentre/MediaSummaries.aspx the only difference is the query string attached to filter by year as in http://demo.thedominion.ca/MediaCentre/MediaSummaries.aspx?Year=2009

    a) Would this be the sliding scale expiration on that page that should be set much higher than 120 seconds?
    b) Why would each page need to load into cache if it's actually the same page, or is this as a result of the Asp.net cache by variable type technique.

    Regards,
    Jacques

    Reply

  • J.Hoventer Master avatar

    Posted on Jan 25, 2010 (permalink)

    Hi Ivan,

    Another follow up.

    I thought this might be a case of increasing the caching time for the MediaSummaries page, so i set it to 960 seconds.
    I then proceeded to go through all the pages to make sure that they're loaded and expected to see the performance increase for at least the next few minutes.

    1 minute later I tried a few of the pages again and the 13-15 second delay was experienced again.

    How can this be?

    Jacques

    Reply

  • Claus Espersen avatar

    Posted on Feb 5, 2010 (permalink)

    If you try running the site with Firebug for Firefox. You will notice a lot of stylesheets giving you a 500 response header.. Server Error. Errors like that will cause great delays...

    Stylesheets like
    http://demo.thedominion.ca/App_Themes/DominionV2/Css/03Forms.css
    Does not seem to load... Something seems to be configured wrong on the server for css files.

    Reply

  • J.Hoventer Master avatar

    Posted on Feb 8, 2010 (permalink)

    Hi Claus and thanks for the input.

    You might have been checking this when we went live with the site during which time we would have disabled the development servers.

    If you have a look at http://www.thedominion.ca you should see the full site and on there I have not picked up any errors in terms of CSS files not being loaded.

    Something I have pointed out to the Sitefinity guys is this:
    aspx.page Begin PreRender 0.13553416555613 0.000026
    aspx.page End PreRender 16.3043021394834 16.168768
    aspx.page Begin PreRenderComplete 16.3043594273256 0.000057

    This came out of the trace information from Asp.net. The delays we're experiencing are pretty consistent with the delay seen between these Begin PreRender and End PreEnder events which is 16 seconds.

    What would be very useful to discover is what Sitefinity actually does between those two events. This might help clarify where the fault lies.

    Regards,
    Jacques

    Reply

  • Posted on Feb 19, 2010 (permalink)

    Hello Jacques,

    I noticed the following "The servers are run in Virtual environments on IBM machines and I'm not totally sure but I think the link between that machine and the Oracle 10g server is either fibre or 1Gb copper".  Are your DNN sites accessing the same DB server as the Sitefinity sites?

    We virtulized our SQL Server and had huge performance problems.  The IO on the server was too high and we were getting 1/100th the performance we should have been getting.  We've had no issues since we migrated the DB server back to a physical machine.  Can you move the DB server to a physical machine for testing?

    I'm not a VM expert, as our IT infrastructure is outsourced.  But this might be a good test.  They tried many different RAID configurations, replacing hardware, adding memory, etc.

    Hope this helps...and doesn't add to the confusion!
    J

    Reply

  • Simon avatar

    Posted on Mar 30, 2010 (permalink)

    We have also experienced performance issues with Sitefinity. For reference our set up is as follows:
    2 IIS7.5 servers, 4GB Ram, dual Core 3.1ghz behing a Zeus Load balancer
    Oracle 10g (physical server)
    SQL 2008 (VM)

    I have experiemented with caching in various approaches, InDatabase, InMemory, setting expiration dates of a day and so on.

    For our main site http://www.ifslearning.ac.uk we get pretty good speeds, however for http://ti.ifslearning.ac.uk or http://ext.ifslearning.ac.uk (which are microsites for specialist users) which require authentication the pages are slow to load. My goal is to get pages loading in less than 3 seconds but that is so far not possible.

    I used ANTS profiler and found that the menu controls were taking 0.8seconds, I wonder whether this is because the logic required to establish which pages should be shown to the current user is inefficient? The only difference between the main site and these microsites is that all pages require Authentication and then there are further restrictions for roles. This seems to add 2-3 seconds per page for loading times.

    Also when watching pages loading in Firebug there is a long wait simply waiting for the server to respond. It seems to correspond to the PreRender delay noted by Jaques. As far as I can see the server is not spiking, there is very little disk IO, very little change to RAM or CPU when requesting a page, so I don't think the server is struggling. The Database server also seems to be coping with requests and not out of resources.

    Turning off authentication does result in significantly faster load times.

    I have noticed with very aggressive caching that even the username is cached, so anyone visiting the cached page is seeing my username greeting them. In the end I had to remove that element from the page.

    Reply

  • J.Hoventer Master avatar

    Posted on Mar 30, 2010 (permalink)

    Hi Simon,

    We've currently got a support ticket open with Sitefinity to help solve this problem although there have been major delays since they were working on a service pack. So far there has been no valuable feedback, but we're waiting to see what comes up.

    Something that might help shed some light here is to switch on the Asp.net trace and paste in the amount of seconds it takes for for each of the page events to execute. For us, the extremes were 16 seconds for Begin PreRender / End PreRender. In your case it might be slightly different considering the login requirements. It is concerning that you're experiencing considerable performance improvements with authentication switched off.

    Something that I have noticed, and I stand corrected on this, but it seems you haven't got compression enabled on IIS. Although it's not the answer you're looking for, it certainly does improve performance in terms of lowering bandwidth usage remarkably.

    Regards,
    Jacques



    Reply

  • Simon avatar

    Posted on Apr 1, 2010 (permalink)

    Hi Jaques,

    I will keep following this thread to see any other ideas that come out of it.
    We have had some speed increases with SP3, but upgrading our sites needs some planning to make sure that our other modules all get upgraded at the same time (and that's spread out over 5 sites), so it will be some time before we can roll that out.

    Compression in IIS7.5 seems quite different to IIS6, I'll investigate that. We were having some issues with people visiting our sites who were using the Squid proxy, HTTP1.1 isn't supported by that proxy, particularly compression, so I had to disable that as a lot of our visitors are universities and lots of them use Bloxx which uses Squid.

    Simon

    Reply

  • Chris avatar

    Posted on Sep 14, 2010 (permalink)

    I know this is an old thread, but there seems to be no solution yet.

    I ran into the same issue earlier this year: Slow load times, especially when logging into the backend, as soon as users needed to be authenticated. It turned out that the issue was that we were authenticating our users through Active Directory, which had a quite large (50k+) user base. The Active Directory membership provider that comes with Sitefinity would load all users (the whole directory!) onto the web server, only to then apply paging and sorting in order to return results. I understand that this is necessary in some cases because the .NET Active Directory provider (which the Telerik AD membership provider inherits from) does not provide any sorting or paging capabilities.

    Our solution was a custom membership provider that used a table in the Sitefinity database for user information caching. Note that passwords were not an issue in this case, since the the actual authentication is provided by a SiteMinder server, while Sitefinity only takes care of authorization.

    If you have come across other solutions, please report back here.

    Cheers,

    Chris

    Reply

  • Ivan Dimitrov Ivan Dimitrov admin's avatar

    Posted on Sep 15, 2010 (permalink)

    Hi Chris,

    We made some fixed in AD/Membership provider in 3.7 SP3 and logging time should be decreased with comparison  to SP2 or older versions.

    Regards,
    Ivan Dimitrov
    the Telerik team
    Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items

    Reply

  • Chris avatar

    Posted on Sep 15, 2010 (permalink)

    Correct, I noticed a slight improvement with SP3. However, it was still far from being usable for us, that's why we opted for a custom membership provider solution.

    Cheers,
    Chris

    Reply

  • Register for webinar
Skip Navigation LinksHome / Developer Network / Forums / Sitefinity Older Versions (3.x): Bugs & Issues > Issue: Performance