Announcement

Collapse
No announcement yet.

Schlechte Performance mit ASP.NET

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Schlechte Performance mit ASP.NET

    Hallo zusammen,
    ich habe folgendes Problem.
    Ich entwickle derzeit meine erste ASP.NET 2.0 Applikation.
    Jetzt ist mir aufgefallen, dass der Seitenaufbau extrem langsam ist.

    Bedeutet, eine einfache Seite mit ca 10 Comboboxen dauert bis zu
    4-6 Sekunden bis sie vollständig geladen ist.

    Die Comboboxen haben auch keine Datenanbindung,
    es ist also alleine der Rendervorgang, der so lange benötigt.

    Werden Komponenten z.B. von DevExpress (ASPxGrid) mit verwendet
    (ebenfalls ohne Datenanbindung), wird der Vorgang noch deutlich verlängert.

    Das Debug-Flag (<compilation debug="false">) in der Web.Config ist auf false.
    Ich habe versucht die Seite unkompiert zu deployen, damit alles erst am
    Server kompiliert wird (XCopy).
    Ich habe schon versucht, die Seite vorkompiliert zu deployen.
    Beides macht von der Performance kaum einen unterschied.

    Laut Profiler ist die Prozessorauslastung des Servers bei einem Seitenaufruf
    nahezu ständig auf 100%, ansonsten bei ca 0%.



    Hier noch die Ausstattung der Rechner:

    Serverausstattung:
    P3 1Ghz
    512 MB Ram

    Clientausstattung:
    P4 1,7 Ghz
    1 GB Ram

    Ist das bei ASP.NET Grundsätzlich ein Problem, oder gibt es noch andere
    Möglichkeiten die Performance deutlich zu steigern?

    Danke für eure Hilfe

  • #2
    Hm, ich selber würde auf ein grundsätzliches Problem von ASP.Net tippen, schnell sind die meistens nicht. Wenn es Möglichkeiten gibt, die Perfmance erheblich zu steigern, kenn ich die auf jeden Fall nicht.

    Comment


    • #3
      Hallo,

      ... bis sie vollständig geladen ist.
      Die Problembeschreibung macht deutlich, dass es immer 2 Teile gibt:
      1. Die HTML-Response auf dem Server rendern
      2. Die HMTL-Response über das Netzwerk zum Browser schaufeln


      Ich würde mir zuerst die Größe der HTML-Response ansehen. Wenn die Antwort zu groß ist, muss der ViewState abgespeckt werden (Control-Eigenschaft enableviewstate bzw. die Page-Eigeschaft). Bei einem Postback wertet ASP.NET einen von Browser zurückgeschickten ViewState aus (was bei einer schwachen CPU ebenfalls zur Belastung wird).

      Comment


      • #4
        Im Grunde könntest du ja auch über eine Leistungssteigerung per Caching nachdenken, falls das in Frage kommt. Außerdem könntest du über AJAX Steuerelemente nachdenken, die asynchrone Postbacks durchführen, sodass nicht immer die ganze Seite neugeladen wird

        Comment


        • #5
          Hallo!

          Mit diesem Problem hatte ich auch schon mal zu tun, und der Grund war - wie bereits aus vorigen Antworten hervor geht - dass die befuellten Comboboxen derartig viel Traffic verursacht bzw die Seite 'aufgeblaeht' haben; lass dir mal im Browser die Eigenschaften der Seite anzeigen und achte auf die 'Groesse'.

          Ich habe es damals so geloest, dass ich anstelle von Comboboxen einfache Textboxen verwendet habe, in welche der User den Suchbegriff eingibt und dann (im Validate oder so, weiss ich nicht mehr genau) die Query am SQL Server ausgefuehrt wird.
          Das Ergebnis wird dann in einer Art 'Auswahl- / Uebersichtstabelle' (Usercontrol das default maessig auf Visible = false ist) angezeigt und der User den gewuenschten Wert auswaehlen kann.

          Ist zwar nicht die elegansteste Loesung, aber echt wirkungsvoll.

          Da es sich in meinem Fall um eine ASP.NET 1.1 Loesung handelte, war noch nix mit AJAX, was sicherlich auch eine moegliche Alternative waere.
          *-- robert.oh. --*

          Comment


          • #6
            Ein sehr nützliches Tool für diesen Zweck ist Fiddler2. Damit einfach mal den Traffic analysieren und dann sollten die eigentlichen Probleme klar sein.

            Folgendes kann gemacht werden:
            - Überprüfung Comboboxen (wieviel Traffic verursachen sie)
            - Ist der ViewState notwendig?
            - Datenübertragung zippen (IIS)
            - Können bestimmte Daten eventuell nachgeladen werden?
            - usw.

            Es lassen sich auf jeden Fall einige Tunings vornehmen, auch Caching, wie bereits angesprochen.

            Dass ASP.NET generell langsam ist, ist generell eine inkompetente Aussage.
            .NET GUI - DIE Community für GUI-Entwickler

            Living.NET - Blog :: Live Blog :: .NET Casts

            Hol' dir jetzt dein kostenloses .NET BlogBook.

            Comment

            Working...
            X