Frage

Ich habe ein Webapp mit einem öffentlichen Hosting-Unternehmen gehostet wird, wird die Website noch nicht leben, und ich bin immer noch einige Tests mit ihm zu tun. Ich verwende nHibernate mit Schloss Windsor Container für Dependency Injection und die Website scheint von Zeit zu Zeit sehr langsam zu reagieren. Ich habe Unterstützung kontaktiert, aber sie sagte, dass es meine App nicht ihre Server. Hat jemand ähnliche Probleme mit der Leistung ORM basierten Websites hatte, als bei den öffentlichen Hosting-Unternehmen gehostet werden?

Auch, welche Hosting-Unternehmen würden Sie für das Hosting von Websites empfehlen? Ich habe versucht, GoDaddy konnte sie aber nicht nutzen, weil sie nicht zulassen Website voll umfänglich Vertrauen läuft, die offenbar für nHibernate erforderlich ist.


I konfigurierte nHibernate XML-Konfigurationsdateien verwenden, Sitzungen in der folgenden Art und Weise zu öffnen:

using (ISession session = _sessionManager.OpenSession())
{         
ICriteria crit = session.CreateCriteria(typeof(Content));
   return crit.List();
}

Auch in der Application_Start ich den folgenden Code haben:

private static WindsorContainer container;
if (container == null)
   {
     container = new WindsorContainer(new XmlInterpreter(filePath));
      Application[Constant.CastleWindsorAppKey] = container;
    }
War es hilfreich?

Lösung

Sie wissen nicht, wie langsam Ihre Anwendung ist, wenn Sie es nicht messen. Ich bin mit einem Timing http Modul während der Entwicklung große Performance-Probleme schnell zu bemerken. Wenn einer Ihrer Seiten langsam geladen wird, sollten Sie einen Profiler verwenden, um den genauen Flaschenhals zu finden. Ich verwende NHibernate für ein aktuelles Projekt und ich habe keine Performance-Probleme mit ihm. Meine komplexeste Abfrage beinhaltet eine komplexe Objektgraphen von 10 verschiedenen Klassen und mit ihren NHibernate Zuordnungen 0,082 Sekunden auszuführen dauert. Der Hauptflaschenhals in dieser Anwendung wird die HTML-Rendering aspx Vorlage auf die Antwort (das dauert 0,5 Sekunden). Performance-Probleme sind oft in Data Access, aber man kann nicht sicher sein, wenn Sie es messen.

Andere Tipps

Ohne jede Art von Instrumentierung macht ihr nur raten sind. Sie benötigen einen Timing-Proxy um Ihre db Anrufe wickeln. Dann melden Sie sich, wie lange jeder Anruf entgegennimmt. Wenn dies ist, wo Sie Ihre Zeit dann ausgegeben wird haben Sie die notwendigen Informationen, um fortzufahren.

Angenommen, Sie eine Shared-Hosting-Umgebung verwenden, ist es wahrscheinlich nicht Ihre App. Ich habe auf einem gemeinsamen Host völlig in Ordnung Code zum Stillstand kommt gesehen. Die einzige Lösung, die ich für Shared-Hosting-Probleme kennen, ist eine Art von Managed App-Host, ein Virtual Private Server (verwaltete oder nicht) bekommen, oder ein dedizierter Server-Box. Diese Art von Service ist teurer als Shared Hosting.

Wie für Empfehlungen für Windows-Hosting, Es tut mir leid, dass ich keine haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top