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

Weblogic session persistence的性能的问题

 2009-09-22 00:00:00 来源:WEB开发网   
核心提示: 看了Thread dump, 发现居然很多线程在等同一lock,如上面的0x159a82a8,而这个lock的holder居然是FileSessionContext.java,Weblogic session persistence的性能的问题(3),看了一下代码,感觉这代码太太那啥了,不带并行

看了Thread dump, 发现居然很多线程在等同一lock,如上面的0x159a82a8,而这个lock的holder居然是FileSessionContext.java。看了一下代码,感觉这代码太太那啥了,

FileSessionContext.sync(HttpSession sess)

 1         saveTo = getSessionPath(id);
 2         synchronized (dirTreeLock) {
 3           makeStorageDir(id);
 4           os = new DataOutputStream(new FileOutputStream(saveTo));
 5           WLObjectOutputStream oos = new WLObjectOutputStream(os);
 6           oos.setReplacer(RemoteObjectReplacer.getReplacer());
 7           oos.writeObject(data);
 8           oos.flush();
 9           os.writeLong(data.getLastAccessedTime());
10           oos.close();
11           os.close();
12         }

有了这样的代码,这么差的性能就不足为奇了。同样的代码还出现在loadSession()中。这些原本应该由 FileSessionData(对应于每一个具体的Session)完成的工作,都交给了FileSessionContext去做。 SessionContext是什么,顾名思义,Session的上下文,Session的管理者,同一个WebApp的所有Session都由它管理。原本是个管理者,这里却沦落为工兵。打个比方,老板手下50小兵,每个小兵每天要写100行代码,结果小兵都不干活,都交给老板去做了,老板一天要写 5000行,而且必须串行完成,不带并行干活的。这样的老板谁干,不累死才怪。

上一页  1 2 3 4 5  下一页

Tags:Weblogic session persistence

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