locked
Why ASP.Net applications delay so much to load pages RRS feed

  • Question

  • User1043796333 posted

    New hard drive, new motherboard, new RAM, new processor ... new PC (upgraded)

    I have just iinstalled everything new, from scratch, in my PC: WinXP Pro, VS2010, SQL Server 2008 R2

    Even like this, sometimes ASP.Net applications delays a lot of time loading pages

    I have seen this also in the past and I tought it might be some issue with my PC or some bugs with my old installed software or memory problems or anything else but ASP.Net being slow on its own

    It is me , my way of feeling or it comes simply to be that ASP.Net applications are slow in performance?

    I have tried also deploying feature but sometimes it freezes and it freaks you out because when it comes to your customers, working in real life situations, they don't care any other thing than responding rapidly to their customers waiting on the line

    Is ASP.Net slow?

    I'm afraid of asking this: Any tool for impoving its performance?

    Afraid of receiving an answer which will mean taht this is really an issue and not a simple perception of my own

    Wednesday, February 1, 2012 11:30 AM

Answers

  • User-718146471 posted

    I hate to admit it but I'm really stumped, especially now that you say it happens at random. About the only thing I could think that would cause that would be the application pool timeout being exceeded but that is a longshot. Usually, when the app pool goes to sleep (yes, this really does happen - GoDaddy is a great example of that) the application code has to be rebuilt which can take upward of 30 seconds to a minute depending on how much code you are loading, even with compiled DLLs. Beyond that, I have no other ideas.

    • Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
    Thursday, February 2, 2012 6:27 AM
  • User-718146471 posted

    Ok, if its hanging on the main menu, then you would want to run Fiddler to see what the heck its doing. The problem could be a large viewstate which is common with AJAX Toolkit Controls.

    • Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
    Tuesday, February 21, 2012 8:38 AM

All replies

  • User-718146471 posted

    Who is your webhost Topolov? If its GoDaddy, I can explain why. What they do is if the site is not hit within a few minutes, they shut down the application pools which in turn results in rebuilding the application which can give your site the appearance that it has hung. It isn't. There is one application that they give you a windows service in which you can keep doing a get on your pages.

    http://kapie.com/2009/09/26/webapp-keepalive-service

    The other option if you have access to the web server is a Keep Alive Service for IIS. You would install this on the IIS itself. http://keepalive.codeplex.com/

    Wednesday, February 1, 2012 11:44 AM
  • User1043796333 posted

    Thank you for responding so fast

    I'm talking about my own deployments. By the way, is not my firts one. I have been deploying applications since VS2003 old times

    I do nothing special to deploy (now I use the deployment option sometimes) which I understand speeds up applications because it pre-compiles all code at once not waiting the firts time load on the user's side in order to do that

    I just do it the normal way it has been done using IIS. Nothing more

    PS.S: I HOST MY APPLICATIONS ON THE SERVERS OF MY CUSTOMERS

    But even like that, ASP.Net hangs a little while deploying on its own intrinsic development web server

    Wednesday, February 1, 2012 11:53 AM
  • User-718146471 posted

    Ok, now that is interesting. Does this slowness occur each time you open the page or just on the first time? Keep in mind, even if the page is pre-compiled, it still has to load the dll files into memory which can take a few anyway. Have you tried running these apps on a different machine to see if they work better elsewhere?

    Wednesday, February 1, 2012 11:55 AM
  • User1043796333 posted

    Specifically I'm talking about my newer applications, based on EF ASp.Net Dynamic Data C#

    To be true I can tell you that I can see that behavor in applications which have a lot of entities and the database model has all its linking made through Foreign Keys relationships

    The model and MetaData logic works marevouslly this way but sometimes (and not just with tables that have a lot of relationships defined from-to it but also in others rather simple) it also hangs up (or waits a little too long) to display non-complicated tables

    I know you're going to tell me that a lot of this will depend on database schema definition but it is also true that real life applications are not simple and that they are expected to work well to be used in business

    Moreover, SQL Server is a 1st class engine for managing 1,000,0000 of records without much trouble, sin't it?

    I must also say that I have also defined a good structure for my indexes so searching (queries) is made based on pre-defined criteria

    What I'm trying to say is that I can understand that the engine waits a little if you're making a query which involves querying all of the records in a table but this s not the case

    It happens sometimes with simple tables with little records

    Have you ever seen or hear about this situation before?

    Wednesday, February 1, 2012 12:10 PM
  • User-718146471 posted

    Ok, you answered one of my db questions about indexes. Good. Now, are you putting any of your controls inside update panels? If your update panel viewstate gets too big that can bring your site to a crawl. Its happened to me before. My viewstate was nearly a whopping 1.2 megs (not my design Smile ) so I had to redesign the interface to use JQuery. The UI was fine for this dropdown list until it hit about 2000 records. I would say try running fiddler on it to see just how large the viewstate is.

    Wednesday, February 1, 2012 12:15 PM
  • User1043796333 posted

    I am using the normal ASP.Net Dynamic Data application with C#

    It uses 5 basic pages based on templates

    In my case I use just one page: ListDetails.aspx

    Dynamic Data does all scaffolding in that one single page

    ListDetails.aspx uses two components: A GridView and a FormView

    So customization of business rules comes in the form of "Partial Classes" and "MetaData" definition files

    I will mention this just for you to know: documentation on intermediate to advanced issues scarce on ASP.Net Dynamic Data so there might be a little guilt on our own customization of the code for some pages

    But, it seems that the whole interactivity among complex and single pages carries a little disruptions to the web server and it seems that maybe Dynamic Data roundarounds waste its potential, or maybe it uses heavily some kind of extensive paging/caching that can't be discarded at once and hangs while it unloads previous data and loads newer one

    I'm just guessing but it might be that the stock pile of RAM that is being used by Dynamic Data collapses and it takes a while to rebuild it or re-defiine it

    EXCUSE ME FOR THINKING OUT LOUD. I'm just guessing

    Wednesday, February 1, 2012 12:31 PM
  • User-718146471 posted

    Hmmm, now that is curious indeed. I would still fire up fiddler and just examine the crosstalk between client and server. Even if you arne't using updatepanels and all, if your viewstate is large, that can slow performance.

    Wednesday, February 1, 2012 12:33 PM
  • User1043796333 posted

    I might be wrong here but it seems to me that ASP.Net Dynamic Data doesn't use at all ViewState

    The data flips-flop in its inside. It comes and goes (it seems randomly but it certainly obbeys to the way Dynamic Data manages its data)

    So there's noway for you (programmer) to use PostBack and some other natural tools (of course that guys like Stephen Naughton will probably say that it does, but he's a guy out of this world.) I'm talking about normal, limited people

    There's no way because you must rely on the availability of data that the frameworks provides you at difefrent stages, let's call it methods and mostly "Events"

    Depending on the nature of the event, then you have "some" data available BUT IT SEEMS THAT YOU (PROGRAMMER) CAN'T CARRY ON DATA ON YOUR OWN BUT JUST BY MAKING USE OF A LOT OF IMAGINATION

    I mostly use Session variables which by the way is a nightmare because you must know when and how to use it and mostly ... you must know when to discard and reset that info so you don't mess Dynamic Data natural behavior with your own messy code

    Sorry for mentioning this. Don't know where to go

    Wednesday, February 1, 2012 12:44 PM
  • User-718146471 posted

    I understand what you mean. Have you tried running the debugger against the site (I'm talking about where the slowness is happening) so that you can actually step through the processes to see what its doing? I can't think of any other way to know what's happening. Again, without us being able to see your project, its very difficult for us to pinpoint where the problem really is.

    Wednesday, February 1, 2012 12:52 PM
  • User1043796333 posted

    Let me say this and I want to make it clear that I am not changing the original subject of my question. You'll see later that I'm maintaining my original question here. I'm just making my question richer so you can help finding out why ASP.Net performance degrades sometimes

    Naughton's answer in a recent post comes like this:

            protected void Page_Init(object sender, EventArgs e)
    {
    table = DynamicDataRouteHandler.GetRequestMetaTable(Context);
    GridView1.SetMetaTable(table, table.GetColumnValuesFromRoute(Context));
    GridDataSource.EntityTypeFilter = table.EntityType.Name;
    if(table.Name.Equals("Employee")
    GridDataSource.Where = "it.DEPT>3000";
    }

    If you see here in the code below,

    table = DynamicDataRouteHandler.GetRequestMetaTable(Context);

    "table" is a variable of the type DynamicDataRouteHandler.GetRequestMetaTable(Context) NOT A STRING

    But Dynamic Data maintains its properties just when it is executing that piece of code. After that "table" IT'SGONE

    There is no way of recreating that sentence but in that very method

    I'm saying this in order to show you something I was telling you before: programmers need help with customization and the lack of documentation makes you write messy code which might as well be avoided if proper training were published on Dynamic Data

    Coming to our point:  don't know if that pieces of code might be interfering with ASP.Net performance

    BUT THERE IS NO WAY OF CHECKING THIS OUT BY MEANS OF WHAT YOU SAID: DEBUGGING

    Maybe with any other tool but Dynamic Data. No way to do that Jose!

    Thanks

    Wednesday, February 1, 2012 5:36 PM
  • User1043796333 posted

    I understand what you mean. Have you tried running the debugger against the site (I'm talking about where the slowness is happening) so that you can actually step through the processes to see what its doing? I can't think of any other way to know what's happening. Again, without us being able to see your project, its very difficult for us to pinpoint where the problem really is.

    It happens randomly, with any table: after choosing from the main menu, while trying to show a grid

    No way to determine a point in which it happens

    That's why I started installing everything from scratch: my CPU and software

    It behaves the same either in previous or newest condition

    Not really much records in my database. Tables are empty so I'm starting data entering also from scratch

    Any idea?

     

    Wednesday, February 1, 2012 9:19 PM
  • User-718146471 posted

    I hate to admit it but I'm really stumped, especially now that you say it happens at random. About the only thing I could think that would cause that would be the application pool timeout being exceeded but that is a longshot. Usually, when the app pool goes to sleep (yes, this really does happen - GoDaddy is a great example of that) the application code has to be rebuilt which can take upward of 30 seconds to a minute depending on how much code you are loading, even with compiled DLLs. Beyond that, I have no other ideas.

    • Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
    Thursday, February 2, 2012 6:27 AM
  • User1043796333 posted

    So, what from here/

    No ASP.Net Booster or something like that?

    How can you effectively trace ASP.Net but not with the debugger but any other useful tool (believe me, if you were working with Dynamic Data VS2010 debugger doesn't really help much for this purpose)

    Saturday, February 4, 2012 12:19 PM
  • User-718146471 posted

    No ASP.Net Booster or something like that?

    Sorry but no, there is no such thing. I don't have an answser for you here, sorry.

    Monday, February 6, 2012 6:40 AM
  • User1043796333 posted

    Ok. I have a clue here

    Today, ASP.Net started hanging up loading a page in ite very begining, loading the main menu

    It seems to me that there's something wrong between the comunication established with Asp.net and the web server

    Thta's funny, isn't it?

    Monday, February 6, 2012 4:19 PM
  • User1043796333 posted

    .... and ..... ?????

    There will be any future feedbackon this or have we reache a dead end storey?

    Friday, February 17, 2012 2:39 AM
  • User-718146471 posted

    Ok, if its hanging on the main menu, then you would want to run Fiddler to see what the heck its doing. The problem could be a large viewstate which is common with AJAX Toolkit Controls.

    • Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
    Tuesday, February 21, 2012 8:38 AM