javax.servlet.RequestDispatcher.forward居然引发性能瓶颈?

j10A 06-07-14

今天尝试改进曾经的一个jsp web项目,完毕后到tomcat发现jsp页面的render相当慢,第一次慢因为要生成jsp -> java class 也就算了,但后来的任何刷新或点击居然都一样慢,一个页面要2秒。要知道改之前速度是相当快的,也就5ms左右。改的内容很简单,就是新增一段描述文字。然后用JProfile分析,发现 javax.servlet.RequestDispatcher.forward 方法占用cpu性能高达 99% ,百思不得其解。后来实在没有办法,就干脆仍然利用原先的jsp文件,然后用notepad把新增的部分复制到曾经的那个jsp,这下好了,又恢复到了5ms。
曾经也遇到过此问题,但归咎到是resin的一个解析bug,现在问题又重现到了tomcat!问题是解决了,但充满了运气和惊险。
谁能告诉我可能的原因是什么吗?thanks

wwlhp@jdon.com
2006-08-13 22:40

forward是web框架的经典功能,比如错误页面、多页面处理等都用到了forward功能。
检查一下是不是代码的问题,比如request里放的属性attribute太大,forward到另一个资源会创建一个新的request,和原先request有相同的属性。