Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at


  • Randy 8 posts 78 karma points
    18 days ago
    Randy
    0

    Umbraco Azure Performance Issues

    Hello, We use Umbraco 7.4.1 on Azure Web App S2. The performance is very bad; a lot of responses are < 2s but constantly get over 2s and at times site just drags (over 1 min response and higher).

    We initially were set up on S1 and I've since up Scaled Up to S2. Should I scale up more?

    My concern is when the site isn't responding well I'm not seeing anything glaring; CPU is under 50%. Just not sure what the issue is.

    Thanks

  • Marc Goodson 727 posts 4628 karma points MVP 3x c-trib
    18 days ago
    Marc Goodson
    2

    Hi Randy

    There are quite a few factors that could be affecting the stability of your site - Are you seeing any info/errors in the logs /app_data/logs and do you have FCN mode set to single or disabled?

    That is the first thing I would check in your web.config

       <httpRuntime requestValidationMode="2.0" enableVersionHeader="false" targetFramework="4.5" maxRequestLength="51200" fcnMode="Single" />
    

    I would change it to be

       <httpRuntime requestValidationMode="2.0" enableVersionHeader="false" targetFramework="4.5" maxRequestLength="51200" fcnMode="Disabled" />
    

    and see if this makes a difference to the stability....

    (changes to the site templates won't be picked up until an application pool recycle is made, with fcnMode disabled, but often on 7.4/7.5 this will prevent the site from struggling performance wise)

    regards

    Marc

  • Randy 8 posts 78 karma points
    18 days ago
    Randy
    0

    Thanks Marc!

    Yeah, I've been checking everything; logs, Live Metrics Stream, Performance, CPU, and just don't see anything consistent with requests; we get low requests (under 10) and sites struggles.

    Anyway, didn't quite see what you recommend to set FCN to. Its currently set to "Single"

    <system.web>
        <customErrors mode="RemoteOnly" />
        <trace enabled="false" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true" />
        <httpRuntime requestValidationMode="2.0" enableVersionHeader="false" targetFramework="4.5" maxRequestLength="51200" fcnMode="Single" />
    

    Should I set it to "disabled"?

    Also, when you say changes won't be picked up until an application pool recycle...is there a way I can force this?

    Thanks again Randy

  • Marc Goodson 727 posts 4628 karma points MVP 3x c-trib
    18 days ago
    Marc Goodson
    0

    Hi Randy

    Sorry didn't highlight the code blocks!

    Yes switch it to disabled, to see if helps stabilise the site, you can always turn it back to single, if it makes no difference. (fcn mode info: https://shazwazza.com/post/all-about-aspnet-file-change-notification-fcn/)

    It depends on how you are updating your site, if you are updating templates via the backoffice, you can install a plugin called 'God Mode' that has a button to force the recycling: https://our.umbraco.com/packages/developer-tools/diplo-god-mode/

    Out of interest do you have any other packages/plugins installed on the site?

    regards marc

  • Harry Spyrou 154 posts 420 karma points
    17 days ago
    Harry Spyrou
    0

    Hi Randy,

    Are you using Models Builder and if so, which one? PureLive or DLL etc?

  • Randy 8 posts 78 karma points
    17 days ago
    Randy
    0

    @Marc I did update FCN to Disabled. I also scaled up to S3 (on recommendation). I would have preferred not to scale up until we found the exact cause but it does seem like performance has improved.

    Regarding packages/plugins, I wasn't part of the install of our instance...taking it over. But looking at Developers>Installed packages looks like we just have Gather Content and Txt Starter kit.

    I noticed on the "Running Umbraco on Azure Web Apps" ariticle on Umbraco, it recommends under "Umbraco XML cache file and other TEMP files" to "Umbraco XML config file is stored on the local server".

    Should I do this? Does this have any affect on performance?

    @Harry Thanks for your response. I don't believe we're using either. Are these packages? Since I don't see these in Developers/Installed Packages does this mean we don't have them?

    Will these help performance?

  • Marc Goodson 727 posts 4628 karma points MVP 3x c-trib
    17 days ago
    Marc Goodson
    0

    Hi Randy

    That's ok, I only ask about packages as there are a couple of culprits, that can, in certain niche circumstances, trigger constant app pool recycles, and in the description about the problem it seemed to you to not be related to requests.

    Obviously moving to S3 will have improved performance! what setting FCN mode to disabled means, that when ImageProcessor writes it's cached version of images after processing them to disk (usually in app_data/cache there isn't an associated 'File Change Notifications' raised, when it's not disabled, even when it's set to Single you can get poor performance as the number of notifications triggered can cause a flooding of the change notification process, and the app pool recycles.

    Similarly ModelsBuilder was shipped for the first time with Umbraco 7.4 and it to writes files to disk etc

    If you are not using ModelsBuilder in your templates (basically a c# class is generated for each document type - have a look at the top of your template pages, do you have @inherits UmbracoTemplatePage or a specifically named model in angular brackets....

    ... if you are not using Modelsbuilder then you can turn it off completely via a web.config appsetting

    <add key="Umbraco.ModelsBuilder.Enable" value="false" />
    

    Are you using SQL Azure db? and is it in the same region/resource as your web app - latency can be a big problem with an Azure web app.

    A lot of problems you will experience with Umbraco 7.4 on Azure web apps is to do with the way Umbraco writes files to disk, and in Azure Web apps how servers migrate automatically etc the recommendation for 7.4 is to thave the following setting

    <add key="umbracoContentXMLUseLocalTemp" value="true" />  
    

    The theory here is it's faster to read/write the config cache file from the specific server than Azure Web Apps shared disk space - so again it will affect performance.

    There have been lots of improvements in later versions of Umbraco, particular 7.7.3 which HQ recommend people on Azure Web Apps upgrade to, to take advantage of several enhancements to the storing of indexes/cache files, but generally I like to get the site stable, before upgrading! as your adding lots more unknowns (going from 7.4 to 7.7.14 is relatively straightforward, have a read of the version specific issues here: https://our.umbraco.com/documentation/getting-started/setup/upgrading/version-specific)

    Finally check your examine index locations set in /config/examineindex.config

     <IndexSet SetName="ExternalIndexSet" IndexPath="~/App_Data/TEMP/ExamineIndexes/External/">
    

    make sure these do not include a {machinename} placeholder, as on azure web apps, when your server 'changes' your examine indexes will get rebuilt...

    regards

    Marc

  • Randy 8 posts 78 karma points
    17 days ago
    Randy
    0

    Marc,

    Thanks so much for all this...this is great! We just migrated to Azure Web App in Oct and though response wasn't good, it was too much of a big deal since not much traffic.

    Now that we have a new marketing company (and new owner), response times are crucial. So again thank you so much!

    I completely forget about the region, I'll definitely take at look at that.

    Regarding "umbracoContentXMLUseLocalTemp", I was in process of implementing this. Can you 1) provide a sample of how to add this to the web config? I believe this goes in Umbraco's config? I searched google to find example of what tag this goes but can't find it, 2) I recall seeing an article that explained how to confirm this settings is working; meaning, I vaguely recall it saying there's a folder where files are written to when this is enabled. So basically if I see files there, then it confirms this setting is correct

    Thanks Randy

  • Marc Goodson 727 posts 4628 karma points MVP 3x c-trib
    16 days ago
    Marc Goodson
    0

    Hi Randy

    It is an 'appSetting' within the web.config

    so find <appSettings

    and you'll see a bunch of other Umbraco settings

    <add key="umbracoConfigurationStatus" value="7.4.3" />
    <add key="umbracoReservedUrls" value="~/config/splashes/booting.aspx,~/install/default.aspx,~/config/splashes/noNodes.aspx,~/VSEnterpriseHelper.axd" />
    <add key="umbracoReservedPaths" value="~/umbraco,~/install/" />
    

    so check if the setting already exists, and if it doesn't add it to this section

    <add key="umbracoContentXMLUseLocalTemp" value="true" />  
    

    regards

    Marc

  • Randy 8 posts 78 karma points
    1 week ago
    Randy
    0

    Hi Marc,

    Thanks again for all your help. So it looks like we may have found the issue. Although, Scale Out to S3 definitely helped.

    I noticed from the beginning we do get a lot of log messages; 404s, etc. But didn't seem like this was causing performance issue....just logs...how can that affect performance.

    Well, since so many messages were being written, it looks like our Service App Log4net was spending so much time writing messages and subsequently was affecting the performance.

    After disabling it, our site now screams.

    Though, this is a temporary fix. My next task is to fix the 404s (a lot of Umbraco; umbraco/ping, etc.) and figure a better way of enabling logging without it affecting performance.

    Thanks again Randy

Please Sign in or register to post replies

Write your reply to:

Draft