tomcat 禁用session

我們先來做一個實驗,用jmeter對tomcat下的一個jsp頁面做壓測:

(1)jsp的內容非常簡單,1.jsp:


[html] view plain copy

  1. <%@ page language="java" pageEncoding="utf-8" contentType="text/html;charset=utf-8"%>  

  2. <html>  

  3.     <head><title>1.jsp</title></head>  

  4.     <body>  

  5.         this is 1.jsp  

  6.     </body>  

  7. </html>  

沒有任何複雜的處理,只是一個非常簡單的jsp頁面。我們知道,tomcat默認會給每一個jsp都啓用session的。


(2)我們給tomcat設置啓動參數,修改catalina.bat,添加:

set JAVA_OPTS=%JAVA_OPTS% -Xms64m -Xmx64m

(3)啓動jmeter,設置100個線程模擬100個用戶,然後不停的訪問這個頁面,觀察結果:

圖中可以看出來,在請求數目到達33165的時候,tomcat已經內存溢出了。

(4)導出tomcat的內存映像文件:

jps -v:找到tomcat的pid

jmap -dump:format=b,file=tomcat.bin 6616

(5)用mat打開tomcat.bin:

有沒有很吃驚,StandardSession竟然有33197個,所佔內存達到了52M!這是因爲對每個請求tomcat都會爲其創建一個session導致的。

這裏也說明一個問題:就算session裏面什麼也不存,默認就會佔差不多1.5K!所以,Session據對是一個重量級的對象!

(6)那麼如果jsp中不生成Session是不是就不會有這個問題了?我們改一下jsp頁面:

重新做壓測:

tomcat表示很輕鬆,毫無壓力!

結論:tomcat的session是一個非常重量級的對象,能禁用則一定要禁用。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章