Azure Website Performance - MVC Application Azure Websites - performance

I am hoping to get some advice as to how i can figure out what is going on with some performance issues i am suffering from. I have a custom MVC application which is running on Azure Websites in West Europe datacenter. I have one of our offices trying to connect to the website from Singapore which is where the problem lies. If i connect to the website myself (from UK) the performance is fast and zippy. If our Singapore office tries to connect the performance is terribly slow. Sometimes getting to the initial homepage is slow (i.e. no database connections required for login page).
The page will sometimes just sit and "hang" there. What i want to know is how can i debug the performance issues with Azure? What kind of monitoring or performance checks can i do to see if it is a website / sql issue.
Thanks

I would suggest using Application Insights. It's easy to add to a custom MVC app, and will give you good info to help determine where exactly the issue lies.
https://azure.microsoft.com/en-us/documentation/articles/app-insights-detect-triage-diagnose/

The Azure New Relic add in from the market place is very useful. There is a free version which gives you plenty of detail on browser performance and basic sql profiling.
It can provide such details as shown in the screen shot below.

You can use the Support Site Extension (http://azure.microsoft.com/blog/2014/12/01/new-updates-to-support-site-extension-for-azure-websites/) which would allow you to look at live event logs and HTTP traffic. There are also some more advanced tools for performance issues (i.e. memory dump, event viewer logs). For a deeper dive into debugging in Azure App Service see: https://channel9.msdn.com/Events/Ignite/2015/BRK4704.
Also as Ben said, Application Insights (https://azure.microsoft.com/en-us/documentation/articles/app-insights-detect-triage-diagnose/) may help.

Related

Autodesk Viewer on Online Server

I have implemented the Autodesk Viewer API and it is working great as long as we are in my local environment.
But the application in which the viewer has been integrated has been deployed on online server and since then there are several bugs in the viewer. It takes longer to load the file or sometimes doesn’t load it at all.
Are there more configurations required while deploying on an online server? Especially when it is a secure one (https)?
Do we need to convert our free trial to a subscription to have higher performance ?
There still is 86 cloud credits left in the free trial but we are ready to switch to a subscription if necessary.
Your help will be highly appreciated. I'm looking forward to your answers.
Kind regards,
A.
There should be no performance differences and no limitations between running your Forge-based server code locally vs publicly, or via HTTP vs HTTPS. Please send us more details about the stack you're using in an email to forge (dot) help (at) autodesk (dot) com and we'll take a look at it.

Services extremely slow when deployed on Azure

I have a rather strange scenario. We have a range of WEBAPIs hosted on the cloud. We consume those services in our Windows 8 application. The problem is when the services are running locally it takes less than 400ms but when hosted on Windows azure it takes upto 20 seconds for some requests. I have checked the indexes of our database tables and its fine. I have no clue so as to what to profile and how to improve the performance.
Thanks!
Everyone Thanks a lot!
But I found a way to use dottrace(Excellent profiling tool) on the azure deployment. Here is the link
http://blog.maartenballiauw.be/post/2013/03/13/Remote-profiling-Windows-Azure-Cloud-Services-with-dotTrace.aspx
You can also use windows azure diagnostics and stopwatch class to log all times to the wad tables.
Also found out that the first request to the azure service is always slow in another thread. Have just copied it here below
Serkan, you would need to first make sure in your post, weather you have published a Cloud Service or a Website to Windows Azure. Based on Cloud Service (A Web Role) or a WebSite the answer to your question will be different. As you want to learn more I would explain what goes on behind.
As you suggested that your first connection is slow, I can see that happen with Windows Azure Websites. Windows Azure Websites are running in shared pool of resources and uses the concept of hot (active) and cold (inactive) sites in which if a websites has no active connection for x amount of time, the site goes into cold state means the host IIS process exits. When a new connection is made to that websites it takes a few seconds to get the site ready and working. Depend on how your first page code is, the time to load the site for the first time varies. Similar discussion is logged: Very slow opening MySQL connection using MySQL Connector for .net
With Windows Azure Cloud Service the overall application model is different. Your webrole has its own IIS server which is fully dedicated to your application and above Website limitation does not occur however there could be other reasons which could have slower page load. If you are using WebRole, then what you could do is run a page load profiler first and RD to your Azure Instance to collect the page load data to see what else you could do to boost the performance.
You'll obviously need to profile your app to find the real cause. Check out these two articles which should get you started:
http://msdn.microsoft.com/en-us/library/windowsazure/hh369930.aspx
http://www.windowsazure.com/en-us/develop/net/common-tasks/profiling-in-visual-studio/

windows azure website load time

Sometimes when I access my windows azure website, the initial response time is very slow. After the first page load the website is fast. Some background: The website is not that often visited at the moment. Further, I am using a keepalivecontroller to keep the website running and the website is running in shared mode. I am wondering: are websites that are not that active removed from memory in windows azure? Or is it just that background tasks on the operational level of windows azure are interfering sometimes? It is not transparent for me what is happening, so is there some sla of something for windows azure websites?
There is now a new feature available for Windows Azure Websites in 'Reserved' mode that will keep your website warm. You can now turn on "Always-on" under the "Configuration"-tab on your Azure Website. As explained in this blog post:
When the new “Always On” feature is is enabled on a site, “Windows
Azure will automatically ping your website regularly to ensure that
the website is always active and in a warm/running state,” Guthrie
writes. “This is useful to ensure that a site is always responsive
(and that the app domain or worker process has not paged out due to
lack of external HTTP requests).”
Easiest way to keep a website warm is to call it regularly using the Scheduler feature in Windows Azure Mobile Services.
You simply write a script in the Scheduler that pings your website every x minutes.
Here's a post covering how to do that: http://fabriccontroller.net/blog/posts/job-scheduling-in-windows-azure/
The Windows Azure Web Sites are still in preview, so there is currently no SLA with that service.
The Web Sites do idle out when in free or in Shared mode, which is likely what you are seeing. When the site idles out it actually is removed from memory, and indeed the IIS process host running the site is shut down. This is how they can get the density of hosting 100 sites on the same VM.
You can find a lot of info on the Channel9 site about why this is the case, or, as a shameless plug, here is an article that talks about how the process is handled.
Now, you mentioned that you were using a keepalivecontroller, but what exactly do you mean by that? I use pingdom.com to contantly request data for one of my websites, and that seems to do pretty well. It is still possible that a request doesn't come in and the idle time is met which then cycles the site. It is also possible that even if you always have the site running that the VM the site sites on needs to have the underlying OS updated, in which case Azure would then move the site process to another VM, which could also cause the slow start up on the next request.
I'd start logging your application start ups and then look through your logs to see how often that is happening.
If you only need to warm it up once (vs keeping it warm) and are mostly trying to prevent your customers experience page cold starts, I believe the correct tool is IIS Application Initialization. You can configure it with a list of urls to hit before it deems the app ready for action.
My site is suffering from page cold starts and that is severely magnified in Azure Websites (even on an S3), but it is absolutely speedy after its served that first time thanks to several layers of caching (our inefficient use of Umbraco's dynamic nodes query language creates a lot of database churn--which we're cleaning up opportunistically).
From what I've read and my own web.config attempts this is still not available in Azure Websites. I've asked Microsoft for it here: MS IDEA: Application Initialization to warm up specific pages when app pool starts. Please consider voting for it.
For each service/site you need to go to "Configure", then switch "Always On" to ON. Also make sure you click Save; it took my website about 2 minutes before noticing the change.
Why this is not the default is kind of mind boggling, because my setup on HostGator was running much faster than Azure. I guess Microsoft is figuring if nobody is accessing your site, it's okay if it has a long load time.

I need some guidance and help from pros to host my new app .(please read everything)

I have been making Desktop applications for last few years. but now i have quite that job and thinking about doing working for myself. I have gone through many ideas. finally i decided to develop Online billing application . Since i am new in web application i know very little about web technologies.
I am thinking about developing that application in php or asp.net with mysql database. I don't know which one is better.(you can guide me here). I don't know whether its good idea or not.but i don't want to do job and work for myself that's for sure.
its going to be a big project so I was making budget for this whole project but i don't know what kind of hosting i will need for this app because database load will be very high because its billing application. i don't know how much it will cost me.I will give user free trial for 30 days to use application and if they like they can upgrade their accounts.
So i need your help to decide what kind of hosting will be appropriate.is this ok if i use webhosting that we use to host website which will cost me $10 to $15 a month or i will have to use cloud hosting which will cost me a lot?
I hope this link will give you idea. I want to make application like this : http://www.rapid-billing.com .
pls help me out. it might me small things for you but to me it matters a lot. Thanks
Initially, you won't have very high traffic, so using a cheap, shared server should be fine. If you outgrow it, then you must have some money coming in, so the added expense of cloud hosting will be more tolerable. There's no need to go all-in before you even get going.
That said, many cloud hosts offer some amount of hosting free, which would probably suit you just as well during initial development. An added plus of starting in the cloud is that you won't have to migrate later. Off the top of my head, Google App Engine and Heroku come to mind as well-known cloud hosts with a free tier. Microsoft Azure also provides a free 3 month trial, and I imagine they'd be a good host if you choose to go with ASP.

Code specifically for Azure?

I heard that apps don’t port directly and they have to be specifically written to work with Azure. I’m new to Azure and did some reading but I don’t see anything from their site or documentation that suggests that you must specifically code for Azure, so is it true?
If this question is better suited for another StackExchange site please let me know.
You should take a look at the Windows Azure Platform Training Kit to see some introductory project labs.
While you theoretically can just "drop in" some apps into a Windows Azure VM, it hardly makes sense to do so. Some apps can be migrated with only minor changes, such as an asp.net website - session state is easily handled by AppFabric Cache, and the Web Role VM is Windows Server 2008 with Full IIS. However, you'd still need to integrate with Windows Azure Diagnostics, to be able to have external visibility to the health of your app.
Further, with the example above, there are more optimal things you can do, such as moving static content to blob storage, and taking load off your VMs. This requires you to upload this content, and then change your IMG and other tag URLs to point to a slightly-different URL.
Just remember that you're moving to Windows Azure to take advantage of its platform and related services, not just to be a rack to host a server. To take advantages of these services, you're going to have to target them specifically, such as:
Access control services
Caching
Connectivity (vpn, service bus)
Diagnostics
Database (SQL Azure)
Synchronization services
Traffic management across data centers
This is somewhat true. Your apps will typically run as-is. You just need to add an azure project to the solution, and add your MVC apps as roles to the Azure Project.
I found O'Reilly's "Programming Windows Azure" to be a good conceptual introduction to Azure.

Resources