Nicht serialisieren Sie den Sitzungsstatus?

Wir haben ziemlich großen Maßstab Anwendung und vor kurzem Probleme mit zufälligen Abmeldungen. Nach den Ermittlungen haben wir herausgefunden app pool ist recycling nach dem physischen Speicher-Grenze (1 GB)erreicht ist. Ich hab nun versucht zu retten, session-state out-of-process wie unten

<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" cookieless="false" timeout="20"/>

Nach einer änderung der session-state-Modus zu "StateServer" und ausführen der asp.net Status service auf dem server. Ich m immer folgende Fehlermeldung

"Nicht serialisieren des Sitzungsstatus. In "StateServer" und "SQLServer-Modus', ASP.NET serialisieren der session state objects, und als ein Ergebnis nicht-serialisierbare Objekte oder MarshalByRef-Objekte sind nicht zulässig. Die gleiche Einschränkung gilt, wenn ähnlich wie die Serialisierung erfolgt durch die benutzerdefinierten session-state speichern im 'Custom' - Modus."

Anscheinend habe ich zu mark-Sitzung verbundenen Objekte mit dem [Serializable] - Attribut, aber die Anwendung ist ziemlich groß. Gibt es eine Möglichkeit, dieses Problem umgehen?

Dank

  • Ich habe zu beobachten: in den heutigen Bedingungen, 1GB ist ziemlich mickrig für eine web-server - Erhöhung der Speicher konnte eine sehr kostengünstige Art, performance verbessern, ohne den Aufwand (Bandbreite, Latenz, IO - oder code-änderungen) zu serialisieren Zustand, wir verwenden normalerweise 32 GB für die web-tier, aber auch 4GB würde einen großen Unterschied machen hier...
  • btw, unabhängig davon, was Sie tun, würde ich dringend raten, es ist immer eine gute Idee gewidmet haben, die Objekte nur für session-state - idealerweise sehr einfache, pure data "DTO" Typen (keine Implementierungsdetails, keine 3rd-teilweise-tools, keine Veranstaltungen, etc) - und definitiv unveränderlich. Sobald Sie dass haben, die Entscheidung zu fügen [Serializable] (oder auch nicht) ist trivial: plus werden Sie genau wissen, was Sie sind die Speicherung im session-state, und warum
  • wir haben eine Gesamtgröße des physischen Arbeitsspeichers von 8GB auf dem win 2003 server. Ich habe erhöhte Maximaler verwendeter Speicher in Megabyte und 2000, aber nicht eingestellt haben etwas für Maximaler virtueller Speicher. Ist es ratsam, verwenden virtuellen Speicher? wenn ja, was könnte ein vernünftiger Wert für Sie
InformationsquelleAutor rumi | 2013-09-19
Schreibe einen Kommentar