2016-07-20 2 views
0

Ich habe Jboss-Anwendungsserver Oracle Commerce ausgeführt. Ich habe 5 Seite Serving-Instanz [VM-Server] und rund 300 Benutzer, die Website jederzeit durchsuchen. Ich versuche, eine Nummer für Session-Timeout zu finden, so dass der Kunde genug Zeit zum Durchsuchen und Auschecken hat, aber auch nicht zu viele offene Sitzungen, die den Speicher halten würden. Also meine Frage gibt es eine Faustregel, um die Sitzungszeitlimits zu bestimmen?Wie zu bestimmen, wie viele Sitzungen zu viele für eine Webanwendung sind

Jboss 7, Java 7 mit 8GB Speicher für jedes jvm. Derzeit ist das Sitzungszeitlimit auf 10 Minuten festgelegt. Möchte es auf 30 Minuten erhöhen.

Antwort

1

Hier sind die Dinge, die ich denken kann: - Sitzungsgröße. - Thread-Pools - die Anzahl der gleichzeitigen Threads zum Server. Dies kann vom Anwendungsserver konfiguriert werden. Es gibt mehrere verfügbare Thread-Pools für den JBoss. Sie haben beispielsweise mehrere Pools für den Servlet-Container, die für den EJB-Container getrennt sind. Sie können hier einige Details lesen. https://developer.jboss.org/wiki/ThreadPoolConfiguration#jive_content_id_Deploying_Threading_Components - Ihr Anwendungsfall. Wie viele gleichzeitige Benutzer erwarten Sie?

Wenn Sie keine Threads mehr haben, werden alle weiteren Anfragen in die Warteschlange gestellt (ich denke, das hängt ein wenig vom Executor ab), aber im allgemeinen Fall ist es so. Dies belastet den Speicher. Sie sollten also nicht oberhalb der maximalen Poolgröße arbeiten.

Die Größe der Sitzung und die Anzahl der gleichzeitigen Benutzer, die Sie erwarten, werden Ihnen helfen herauszufinden, wie Ihr Speicher im Laufe der Zeit wächst. Sie sollten Pick-Stunden berücksichtigen und wie die Website-Nutzung in den letzten Jahren gewachsen ist.

Hier sollte beachtet werden, dass, da Sie Online-Anwendung haben Sie wegen des Garbage Collector lieber kleine HEAP-Größe über große Heap-Größe bevorzugen sollten. Wahrscheinlich ist es eine gute Idee, den neuen G1 Garbage Collector zu verwenden.

bearbeiten basierend auf letzten Kommentar: Ein naive Art und Weise den Haufen ohne sehr starke Präzision mit Hilfe von Profiler zu messen ist: 1. Starten Sie Server, einen Testlauf mit einzelnen Benutzern, um alle Klassen zu initialisieren machen . 2. Erzwingen Sie die Garbadge-Sammlung und nehmen Sie einen Benchmark. 3. Führen Sie eine große Stichprobe von parallelen Benutzern aus und beobachten Sie, wie viel der GC freigibt (den GC erneut erzwingen), wenn Ihr Auswahlspeicher erreicht ist.

Nun ist dies ein naives Vorgehen.

Ein komplexerer Ansatz wäre, die Größe der Sitzung mit Hilfe eines Objektzuweisungsüberwachungstools zu berechnen (Profiler erneut verwenden).

+0

Gibt es einen Weg in Java, um herauszufinden, was die Sitzungsgröße ist? – Cdesai

+0

Ja, es ist nicht sehr schwierig. Rüsten Sie sich einfach mit einem guten Profiler wie Yourkit aus und Sie können die Größe eines beliebigen Objekts messen. Wenn Sie ein kostenloses benötigen, wird VisualVM wahrscheinlich den Trick machen. Die Hauptfrage ist wiederum, wie genau Sie sein möchten. –

0

Zusätzlich sollten Sie den Speicher der JVM überprüfen, indem Sie die GC-Protokollierung aktivieren. Es wird eine gute Idee geben, wenn es erschöpft ist. Ein weiterer Indikator ist die CPU-Auslastung. Es hängt von der Benutzeraktivität und der Anwendung ab, was benötigt wird. Wenn Sie genügend Speicher haben, können Sie die Anzahl der parallelen Sitzungen erhöhen, solange Sie genug CPU-Leistung haben, um die Anfragen zu bearbeiten.