WEB开发网
开发学院软件开发Java Weblogic session persistence的性能的问题 阅读

Weblogic session persistence的性能的问题

 2009-09-22 00:00:00 来源:WEB开发网   
核心提示: 同样loadSession()也被挪到了FileSeesionData, FileSessionContext只调用FileSessionData的接口就可以了,虽让这样可以做到并行写入,Weblogic session persistence的性能的问题(5),但整体性能还是不如JDBC,同样

同样loadSession()也被挪到了FileSeesionData, FileSessionContext只调用FileSessionData的接口就可以了。虽让这样可以做到并行写入,但整体性能还是不如JDBC。同样是文件写入, DB毕竟是异步写入的。提交到内存,然后由DBWn和LGWn完成具体的写入工作,所以性能上要好很多。

这样的实现在JDBCSessionData中可以看到,JDBC相关的工作并没有交给JDBCSessionContext去完成。所以JDBC性能要比File要好很多,要使用JDBC store, 配置如下:

weblogic.xml
     <session-param>
        <param-name>PersistentStoreType</param-name>
        <param-value>jdbc</param-value>
      </session-param>
      <session-param>
        <param-name>PersistentStorePool</param-name>
        <param-value>SessionPool</param-value>
      </session-param>
      <session-param>
        <param-name>CacheSize</param-name>
        <param-value>0</param-value>
      </session-param>

要使用JDBC persitence, 需要在SessionPool(jdbc connection pool)下创建wl_servlet_sessions,参考如下链接:

http://e-docs.bea.com/wls/docs81/webapp/sessions.html

好了,这里在提一下cache size的作用。CacheSize用于设定在使用jdbc或file persitence时,内存中cached的session数目。如果cache size为0,ServletRequest结束的时候,该session会被SessionContext从session reference pool中remove掉,这样该Session就成了内存垃圾, GC的时候会被回收掉。下次请求进来的时候,Session会从persistence store中load出来。这样的话,应用性能会有问题。所以生产系统上建议设定一个cache size,这样内存中可以cache一些session, 避免反复load seesion导致的新能问题。ServletRequest结束的时候,如果cache中还有空余空间(ArrayList),将该session置入,如果空间以满,则将最早的那个session给remove掉,而置入新进的session。在设定cache size的应用中,内存中包括两部分session,cache的session和当前open的session(正被引用的session,一般是 ServletRequest还没有结束的session).。注意:在控制台上看到的session数,不是表示当前内存中的session个数,而是persistence store(JDBC, File)中的session数, 即所有当前没有timeout的session。

上一页  1 2 3 4 5 

Tags:Weblogic session persistence

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接