Schabby's Blog
Reserve Orbital Defence Commander

Ab einem gewissen Trafficvolumumen beginnt die Sessionstabelle die der Tomcat auf der Platte hält stetig zu wachsen und täglich größere Ausmaße anzunehmen. Da der Tomcat einen großen Teil der serialisierten Sessiontabelle im Speicher hält, kann das zu einem akkuten Crashrisiko werden, wenn der Tomcat bis zum Limit wächst (oder das OS zu swappen beginnt). Ausserdem ist es ineffizient für jede css-, JavaScript oder Bilddatei einen Sessionstempel im Header mitzusenden. Das gilt inbesondere für Seiten die stark und regelmäßig von Bots gecrawled werden, da Bots naturgemäß keine Session halten und der Tomcat bei jedem Zugriff des Bots von einem neuen User ausgehen muss und eine neue Session anlegt.

Es stellt sich also folgende Frage:

  • Session unterdrücken in Tomcat / JSP
  • Tomcat keine Sessions
  • JSP / Tomcat ohne Sessions

Im Prinzip ist die Lösung sehr einfach. Man muss nur zwei einfache Regeln befolgen.

  1. Mache nur nur request.getSession() calls wenn Du wirklich eine neue oder die bestehende Session brauchst (Login, etc.). Überlege Dir auch, ob nicht request.getSession(false) reicht (= nur eine bereits bestehende Session zurückgeben, aber keine neue Anlegen falls noch keine existiert).
  2. Setze in allen JSPs die Direktive <%@ page session="false" %> um das automatische Erzeugen einer Session im JSP-Code zu unterbinden. Wenn Du die Session doch in einer JSP brauchen solltest, erstelle sie vorher in einem Controller.

Post Comment

Please notice: Comments are moderated by an Admin.