Weblogic session persistence的性能的问题
2009-09-22 00:00:00 来源:WEB开发网同样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。
Tags:Weblogic session persistence
编辑录入:爽爽 [复制链接] [打 印]- ››WebLogic调整Java虚拟机性能优化参数
- ››Weblogic执行transaction recover碰到的奇怪问题
- ››Weblogic session persistence的性能的问题
- ››weblogic92连接池的连接数异常问题
- ››Weblogic中几个internal的XA timeout(状态切换相关...
- ››Weblogic中因为IP变更导致SubCoordinator not ava...
- ››Weblogic中的load banlance问题
- ››Weblogic81中HttpCompleteMessageTimeout相关的两...
- ››Weblogic 8.1 for Linux ES3.0安装与配置
- ››Weblogic 8.1 for Linux ES3.0安装配置
- ››Weblogic中使用持久缓存技术优化CMP性能
- ››WebLogic运用DB的Java控件访问数据库
赞助商链接