I just deployed a MVC3 application that uses Table Storage to Windows Azure. Performance is slow开发者_JS百科 and I am not sure what is wrong. I am using firebug and it reports waiting of around 2 seconds for pages that involve some very simple key based table lookup when looking up data from tables with less than 20 rows.
Can someone suggest some things I should check. For example when deployed does it deploy in debug mode? How about other things that I could use to monitor performance and check why things are slow. What do people normally use to check out performance.
Sorry my question is not very specific but this is the first time I have deployed into production and I would at this moment like to get some hints on things to look into.
Maricel
This sounds very slow for table storage.
Some possible things to try/check:
- can you debug the application using your local debug compute instance but using your real azure storage keys - if you do this, then what's the performance?
- can you check your code over to confirm how many calls you are making to Azure storage?
- can you isolate what's causing the problems - especially can you isolate if it's something like Membership or Session storage rather than getting your specific rows back?
- can you debug print some trace about the time individual calls to Azure storage are taking?
- are there any problems reported on http://www.microsoft.com/windowsazure/support/status/servicedashboard.aspx? (Currently I don't see any)
- are your storage and compute services located in the same data center? (Even if they weren't I'd expect better performance than you are saying)
- can you enable iis logs uploaded to Azure Storage? - then you can check the times of your http calls as reported by IIS.
Hope some of those help...
Suggestions:
- Remote into the instance and monitor performance via Perfmon. With it, you can see if the issue is with CPU utilization, IO, or anything else
- How are you reading the table storage? Are you perhaps reading a lot of rows and only processing 20? Or does the whole table have 20 rows?
- If CPU utilization spikes up when requests are sent to storage? If so, this maybe because Azure is serializing the objects from table storage. Are these big objects? A quick tip, make sure to let your code know what type of an object you're reading from storage, so that it does not have to figure it out. A lot of cpu time is often given to serialization because your code may not know what type of an object it is reading. Look into ResolveType property on the context object to let your code know about the type of an object it is dealing with
HTH
精彩评论