struts的疑问

03-09-12 tesge
struts用了一个总控servlet--Actionservlet,实际的处理是在action中进行的,可是只用一个servlet会不会对性能有影响?因为是在actionservlet中调用action,这样是不是只有在action类完成forward后,actionservlet才能处理别的请求,谢谢

yehs220
2003-09-12 09:15
>因为是在actionservlet中调用action,这样是不是只有在action类完成forward后,actionservlet才能处理别的请求,谢谢<

actionservlet中的方法又不是同步的,看看servlet spec

tesge
2003-09-12 09:25
谢谢,servlet是多线成,可以处理多个请求,可是这些请求都是在一个进程空间里,这样会不会有效率上的影响?

windman
2003-09-12 10:09
昨晚正好看了一下源码,某种角度上ActionServlet就是一个转发器,把各种请求转发给ActionMap、ActionForm、Action等自己处理,自己做的事情很少,也没什么耗时的操作,可以多线程并行处理,还是非常快速的,不会有什么瓶颈的问题。

tesge
2003-09-12 11:19
对,但是它在调用别的类来处理的时候,这个线程空间依然占用着,这样的话它的进程空间也就相应变大,这样是否会有性能上的影响?

lisunway1
2003-09-12 17:03
关注!在MVC模式下如果有很多的页面都通过一个控制器转发会对性能有影响吗?会不会造成性能瓶颈?如果在很多页面的情况下是,是应该如何优化设计?是按类别分成多个控制器优化还是只用一个控制更好?请高手详细分析一下!谢谢!:)

oldma
2003-09-12 21:13
呵呵,反正每个人上来都是一个线程,
用多少控制器不都是这样的吗,
换个思路,你就一个servlet,1000个人同时访问,和1000个人同时访问10个
servlet,都是1000个线程在跑,有区别吗?

tesge
2003-09-13 11:34
如果是10个servlet的话那么就有10个进程空间,虽然最大线程数没有变,可是这时已经分配到10个进程空间去了,也就是说每个servlet都分担了一部分负载。这也是我在前面项目中的用法,但现在我想仿造struts用一个servlet 来进行总控,不知道会不会真成为瓶井。谢谢

yyanghhong
2003-09-14 09:13
多线程和多进程对系统性能影响没太多差别, 但线程间通信比进程间通信要方便. 多线程管理也容易

其实线程空闲并没有关系, 创建和销毁线程更耗费系统开销, 这就是我们需要做线程池的原因.

tesge
2003-09-15 08:34
看来系统只有用多个servlet了,郁闷中

猜你喜欢