none
Langsame Prozesse in anderem Apppool auslagern RRS feed

  • Frage

  • Hi,

    Dotnetnuke-Portal, eigene Navigation im Portal, Webseiten werden im iFrame angezeigt.

    Über meine Navigation im Dotnetnuke-Portal lade ich die Webseiten (aspx) in das iFrame, welches sich im Dotnetnuke Skin/Template befindet.

    Nun habe ich Berichte und Tabellen die ich im iFrame anzeige, welche sehr Rechenintensiv sind und bis zu 10 Sekunden Wartezeit erfordern. Sämtliche andere Webseitenbenutzer müssen dann warten.

    Nun möchte ich diese rechenintensive Seiten in einem anderen AppPool laufen lassen, also "auslagern". Diese sollten sich aber in der Security des Portals einfinden, also bei unberechtigtem Direktaufruf der URL das Dotnetnuke-Standard-Login anzeigen.

    Nun habe ich im Root meiner Website ein Pfad und daraus eine Applikation erstellt und einem anderen AppPool zugwiesen. Darin enthalten eine default.aspx mit Webconfig usw.

    Nun erhalte ich (nach vorherigem Login) bei Aufruf der Default.aspx viele Fehlermeldungen.

    Frage:

    Ist die Richtung meines Vorgehen korrekt?
    Gibt es irgendwo eine Anleitung was ich beachten muss?

    Gruss und Dank
    Philippe

    Dienstag, 27. September 2016 15:27

Antworten

  • Hallo Philippe,

    wenn Du einen Teil einer Anwendung in einen eigenen Anwendungspool auslagerst, werden diese Teile in einem separaten Prozess ausgeführt. Du hast aus der normalen Anwendung heraus keinen Zugriff auf diesen Prozess, die dort enthaltenen Objekte, ...

    Wenn sämtliche anderen Requests auf die gesamte Website warten müssen, bis ein solcher Vorgang abgeschlossen ist, stimmt etwas an deiner Anwendung nicht. IIS kann problemlos mehrere parallele Requests gleichzeitig verarbeiten. Falls Du im Debugmodus arbeiten solltest (entweder als Debug kompiliert oder in der web.config <compilation debug="true" ... /> angegeben), ändere das auf jeden Fall mal für die produktive Anwendung, denn das kann genau solche Effekte auch auslösen.

    Wenn es nicht der Debugmodus ist, kann man allerdings nicht sagen, was genau da nun nicht stimmt und was man ändern könnte, kann ich dir nicht sagen, da ich deinen Code nicht kenne.

    Das Auslagern der rechenintensiven Teile wäre zwar wie gesagt möglich aber mit erheblichen Problemen und Umbauarbeiten in deiner Anwendung verbunden. Einfach nur die entsprechenden Seiten verlagern, wird nicht funktionieren.

    Sinnvoller wäre es wahrscheinlich, die Arbeit in eigene Threads zu verlagern, also ansynchron zu verarbeiten, was allerdings ebenfalls einige Umbauarbeit erfordern könnte. Lies dich zu diesem Thema bitte mal hier ein:

      https://www.google.de/#q=asp.net+async

    P.S.: Da Du "viele Fehlermeldungen" schreibst: Wenn man Fehlermeldungen erhält, ist es immer sinnvoll, diese genau und vollständig (keine Eigeninterpretation, gekürzte Fassung, ...) inkl. des Codes, der den Fehler verursacht, hier zu posten. Da uns hier die Glaskugeln schon vor einigen Jahren ausgegangen sind, raten wir halt sonst einfach und das klappt nicht allzu zuverlässig :)

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Dienstag, 27. September 2016 15:41
    Moderator

Alle Antworten

  • Hallo Philippe,

    wenn Du einen Teil einer Anwendung in einen eigenen Anwendungspool auslagerst, werden diese Teile in einem separaten Prozess ausgeführt. Du hast aus der normalen Anwendung heraus keinen Zugriff auf diesen Prozess, die dort enthaltenen Objekte, ...

    Wenn sämtliche anderen Requests auf die gesamte Website warten müssen, bis ein solcher Vorgang abgeschlossen ist, stimmt etwas an deiner Anwendung nicht. IIS kann problemlos mehrere parallele Requests gleichzeitig verarbeiten. Falls Du im Debugmodus arbeiten solltest (entweder als Debug kompiliert oder in der web.config <compilation debug="true" ... /> angegeben), ändere das auf jeden Fall mal für die produktive Anwendung, denn das kann genau solche Effekte auch auslösen.

    Wenn es nicht der Debugmodus ist, kann man allerdings nicht sagen, was genau da nun nicht stimmt und was man ändern könnte, kann ich dir nicht sagen, da ich deinen Code nicht kenne.

    Das Auslagern der rechenintensiven Teile wäre zwar wie gesagt möglich aber mit erheblichen Problemen und Umbauarbeiten in deiner Anwendung verbunden. Einfach nur die entsprechenden Seiten verlagern, wird nicht funktionieren.

    Sinnvoller wäre es wahrscheinlich, die Arbeit in eigene Threads zu verlagern, also ansynchron zu verarbeiten, was allerdings ebenfalls einige Umbauarbeit erfordern könnte. Lies dich zu diesem Thema bitte mal hier ein:

      https://www.google.de/#q=asp.net+async

    P.S.: Da Du "viele Fehlermeldungen" schreibst: Wenn man Fehlermeldungen erhält, ist es immer sinnvoll, diese genau und vollständig (keine Eigeninterpretation, gekürzte Fassung, ...) inkl. des Codes, der den Fehler verursacht, hier zu posten. Da uns hier die Glaskugeln schon vor einigen Jahren ausgegangen sind, raten wir halt sonst einfach und das klappt nicht allzu zuverlässig :)

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Dienstag, 27. September 2016 15:41
    Moderator
  • Hi Stefan

    Danke für deine Antwort. Du hast natürlich recht.

    Hatte wohl mal ein technisches Problem oder Eigenheit, dass ich auf so was gekommen bin.

    Nun, die neuen Test funktionieren hervorragend.

    Gruss und Dank

    Philippe

    Montag, 3. Oktober 2016 18:24
  • Hallo Philippe,

    prima, dass es nun funktioniert.

    Und was hast Du gemacht, dass es nun klappt? :)


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Montag, 3. Oktober 2016 22:30
    Moderator
  • Hi Stefan,

    Eben nichts, da du ja eben recht hast.

    Ich weiss ja, dass die Zugriffe auf den IIS durch die Anfragen parallel laufen. Sogar im Debug-Modus konnte ich ja die gleichzeitigen Zugriffe debugen.
    Dennoch hatte ich mal bei einem Test auf das langsame Modul mit gleichzeitigem Zugriff aus einem anderen Browser eine komische Reaktion. Evtl. war die eine Seite noch nicht vorkompiliert und dadurch langsam. Keine Ahnung mehr. Da war ich mir dann unsicher, ob dennoch z.B. ein Datenbank Abfrage, die einige Sekunden dauert, die anderen User ausbremst.

    Fazit: Man könnte diese Frage löschen :-)

    Gruss und Dank
    Philippe

    Donnerstag, 6. Oktober 2016 09:16