[CLOSED] Performance bottlenecks clues

Page 2 of 3 FirstFirst 123 LastLast
  1. #11
    Thanks for the suggestions, guys! A single Vuser load test places much less strain on the guest system from the results. CPU utilization is lower staying in the 20-40% range for the most part. RAM usage has never been an issue as I reported before.
    Yes, we're planning to carefully benchmark and profile our Hyper-V setup based on the guidelines at https://msdn.microsoft.com/en-us/lib...bts.10%29.aspx.

    Have you done any load testing of your systems with industry standard tools? If so, I'd be eager to study your observations.
  2. #12
    Personally, I didn't do that for awhile. I asked somebody (within a team and also a couple of our great customers) to look at this thread. Hopefully, we'll share some experience.
  3. #13
    Hi all,

    Been looking at this thread very briefly but there was something that stuck in my mind - you mentioned that you were struggling at around 10 concurrent users?

    I remember a few months back I saw a similar problem in our own heavy Ext.NET 1.x solution. It turned in our case to be the use of session. In particular, our components use ASHX ajax requests for grid and similar components. The ASHXs that were handling the requests for grid data use IRequireSessionState. This turned out to kill performance/throughput.

    IIRC, any request to a page that requires session state is effectively serialized. So all the grid ashx requests to get data (let alone updating data) were all being blocked from one another because of access to session state. Refactoring to not require session state for these requests increased throughput significantly.

    I can't remember exactly the number (and it depends on the application of course) but from a limit of 10 or so requests as a maximum it went up to hundreds. In our particular case, I was also able to implement server side data request caching, so we could effectively get 1000s of requests per second being handled, at low concurrency load tests, like 5 or 10 concurrent users being simulated. I can't remember what it was for higher concurrent users. I'll try to dig out the information - it has been a few months...!

    Although in my case it was using ASHX for direct methods, Grid/Store requests etc, I think this could apply to most ASP.NET applications, though you would need to test to verify. I recently compared using ASHX vs ASP.NET MVC Controllers vs ASP.NET Web API for DirectMethods and Grid Store handling and found they were all similar in performance - none of them required session, for example, and in effect they were pure AJAX requests, not DirectEvents or ASP.NET Web Form event/post backs etc. More info here: http://www.onenaught.com/posts/559/e...eb-api-or-ashx Although unfortunately no code samples, as I suppose it also depends on your specific application requirements and functionality.

    My preference to developing Ext.NET apps is to have the page request build whatever Ext.NET components are needed, but virtually everything else (getting data, adding components directly onto the page dynamically etc etc) is all done via AJAX (ASHX in Ext.NET 1.x but increasingly MVC as I port my app to Ext.NET 3.x). The other thing, if at all possible is to cache, cache, cache (if cache invalidation is feasible - that can be hard!).

    In terms of hardware, I used Windows Server 2012, SQL Server on the same box (as it was my own dev box), with quad core processors, and about 16gb ram. So I think in a production environment our throughput is even higher. But a lot of this I suppose depends on your specific application and what it is trying to do?

    What might be a good thing to try is to isolate the problem: for example, maybe try to create a standalone page or cut down application that is independent of your current solution to mimic the core of your functionality that seems to suffer, to help isolate it from everything else, and try to load test that. Perhaps the code for such a page can be posted here so that others can also analyse?

    In terms of what load testing tools to use. I think anything with reasonable pedigree should be okay. In my case I used WestWind's WebSurge load test tool: http://websurge.west-wind.com/ - it has a nice interface to capture/tweak the requests you want to measure and load test.

    If I can find some time this week (might be tough with some deadlines looking), maybe I will try to use it to run through some of the examples in the Examples Explorer for 1.x...?

    Otherwise, without knowing more about how your app works, it could be anything... Either Ext.NET or not...

    I don't know if that is much help...?
  4. #14
    Hi everybody,

    I am confident that we would be able to address the performance issues that Vadym is facing by using both Application Insights and Cloud-Based Load Testing, provided by Visual Studio Online. I often use them to find, understand and solve both client and server issues.

    Vadym, i am not sure if you have experience with Visual Studio Online, but we are here to help. I need a scenario - Sample Application, Sample Database and Servers Configuration - and i would be able to configure both Application Insights and Load Testing.

    By doing that we are gonna be able to discover issues instead of imagine what / where they are.

    Let me know whether you are interested in doing that.

    Useful links:



    Have you done any load testing of your systems with industry standard tools? If so, I'd be eager to study your observations.
    Yes, i did on versions 2.5 and 3.1, using the tools mentioned above. The server was running on Amazon AWS (EC2, BeanstTalk and RDS), quite different from your scenario, but If you need i can provide you with some details.
    Last edited by RaphaelSaldanha; May 20, 2015 at 10:51 AM.
  5. #15
    Vadyn, in addition, could you provide me with both IIS and Application Pool configuration, especially Maximum Worker Process and Recycle Timeout?
    Last edited by RaphaelSaldanha; May 20, 2015 at 1:16 AM.
  6. #16
    Thanks a lot for helping me pinpoint the problem, Anup & Raphael!

    Anup, I believe our application doesn't make use of the HttpProxy proxy pattern to craft AJAX requests. Does this mean that AJAX requests don't use ASHX by default? The application uses Direct Events sparingly although we've been making a conscious effort to eliminate them and switch to Direct Methods instead. A lot of page related calls are made within the Page_Load event once for the page lifecycle. Although lots of static data is cached using System.Web.Caching.Cache object, a page has to query the Session object to retrieve user specific primitives like logged in user id, first name, last name, department id, etc. Also, there's a fair share of LINQ queries manipulating data when it gets prepared for display.
    It's a good idea to benchmark the application performance by comparing it to a simpler yet functional one with similar attributes. While we're at it, IIRC Anup has put together a fairly complex trader app. Unfortunately, I was unable to find it anywhere but it would make a great sample to benchmark against if it were available.

    Raphael, I don't have experience working with Visual Studio Online but will take a look. I will see if we could put together a functional application sample to run the scenario you've proposed. In the meantime, attached is a snapshot of the App Pool settings for your review.
    Click image for larger version. 

Name:	App Pool IIS Settings.png 
Views:	72 
Size:	25.7 KB 
ID:	23987
  7. #17
    Maximum Worker Process set to 1 means that not matter how many cores you have, just one is gonna be used by your application (Application Pool).

    That can slow down your application because the requests are gonna be queued. It's possible to increase that number but it will affect your server session, because your application would be running as a web garden. So you would have to create a state server.

    In addition, it's not easy to determine the correct Maximum Worker Process, it may vary due to several aspects. It would be required to inspect your environment as a whole to suggest a number.

    It would be easier if you use IIS 8.+, because on that you can set Maximum Worker Process to 0 (Zero) and take the benefits of using a Non-Uniform Memory Access (NUMA) architecture.

    More details about NUMA:


    I will see if we could put together a functional application sample to run the scenario you've proposed. In the meantime, attached is a snapshot of the App Pool settings for your review.
    Please keep me posted.
    Last edited by RaphaelSaldanha; May 21, 2015 at 11:19 AM.
  8. #18
    Confirmed: application behavior became erratic when I set Maximum Worker Process count to 2 on our IIS 7.5. The server OS is Windows 2008 R2 so I'm not sure if it would be feasible to upgrade to IIS 8.x. I suspect it would require an upgrade to Windows 2012 as a prerequisite. NUMA is an interesting performance improving option to ponder though, thanks for that!
  9. #19
    Confirmed: application behavior became erratic when I set Maximum Worker Process count to 2 on our IIS 7.5.
    In my opinion it's not possible to run a application in production with that config set to 1. Let me know in case of you need help to determine an strategy that fits your needs.

    The server OS is Windows 2008 R2 so I'm not sure if it would be feasible to upgrade to IIS 8.x. I suspect it would require an upgrade to Windows 2012 as a prerequisite.
    At this moment of our industry i would not consider to "upgrade" to "another" on-premises server configuration. I would move to the cloud instead, and concentrate all efforts on the development instead of taking care of application's infrastructure. Please take a look on https://awstcocalculator.com and calculate how much you might save by doing that.
    Last edited by RaphaelSaldanha; May 20, 2015 at 3:16 PM.
  10. #20
    Hello Vadym,

    Is there any progress on your side? Out of curiosity.
Page 2 of 3 FirstFirst 123 LastLast

Similar Threads

  1. [CLOSED] EXT .net performance
    By NECSL in forum 2.x Legacy Premium Help
    Replies: 15
    Last Post: May 06, 2014, 7:04 AM
  2. [CLOSED] Low performance
    By mohan.bizbites in forum 2.x Legacy Premium Help
    Replies: 3
    Last Post: Dec 11, 2013, 9:32 PM
  3. Performance
    By Puia in forum 1.x Help
    Replies: 2
    Last Post: Jul 28, 2009, 10:51 AM
  4. GWT EXT performance
    By jeybonnet in forum Open Discussions
    Replies: 6
    Last Post: Mar 25, 2009, 8:39 AM
  5. AjaxEvent Performance
    By jchau in forum 1.x Help
    Replies: 2
    Last Post: Oct 13, 2008, 1:02 PM

Posting Permissions