JiveJdon Community Forums
在线167人 J道首页 | 论坛首页 | 培训咨询 | 开源框架 | 精华 | 查搜 | 注册 | 登陆 |
首页 » 论坛 » Java多线程 集群 并行模式
???en_US.forumThreadPrev.name??? 上一主题
Go back to the topic listing   返回主题列表
???en_US.forumThreadNext.name??? 下一主题
这个主题共有 43 回复 / 3 页 [ 1 2 3 下一页 ]  发表新帖子  回复该主题贴
senjoso

发表文章: 6
注册时间: 2006年12月23日 13:39
jsp+javabean能否满足100人使用? 发表: 2006年12月24日 11:04 回复
做一个项目.主要是信息的录入.修改,查询.数据量在十万左右.
采用tomcat+SQL Server2000
我没有采用框架.
而是jsp+javabean+数据库连接池.(逻辑基本都在bean里)
能否满足100人同时访问使用?
服务器是双核至强.3G内存.
我在tomcat的monitor里把jvm调到256m ----1024M.

大家估计一下怎么样.基本都是动态页面.所以没有集成apache或iis.
有什么建议.
senjoso

发表文章: 6
注册时间: 2006年12月23日 13:39
Re: jsp+javabean能否满足100人使用? 发表: 2006年12月24日 11:06 回复
我把那个apr也准备集成在tomcat里.这样子怎么样呢.
因为项目基本做完了.不想再采用框架.主要时间挺紧张.spring或structs框架我也不熟,正学.
banq

发表文章: 8920
注册时间: 2002年08月03日 17:08
Re: jsp+javabean能否满足100人使用? 发表: 2006年12月29日 12:19 回复
你这个问题其实分两种情况:
1. 100同时使用?
2. 总共100人使用,使用频度不高,如果是这个没有问题。

下面讨论第一种情况:

关键不在于你的CPU有多强,这里要了解一下Java运行原理。

Java有一个垃圾回收机制,总是在内存剩余大概5%才启动,因为它中断权限最高,它运行,其他全部停止,因此,我们不希望垃圾回收机制频繁启动,那么就要控制内存不要触碰剩余5%底线。

而在普通JavaBeans系统中,每一次客户端请求访问时,系统总是new一个javabeans或Java Class,如果并发访问量很大,比如并发10人或100人,再加上你的系统复杂,有很多JavaBeans,假设有30个,那么这下子100个并发请求来,就有3000个Java对象创建,然后下一批有来一次100个请求,这象潮水一样。

每次请求产生的3000个对象会继续占用内存,不会被垃圾回收机制回收,因为垃圾回收机制只有等到内存剩余5%才启动,这样,你的内存无论多大,取决于访问量,总会被耗光,最后垃圾回收出来收拾残局,你的业务系统被暂停甚至缓慢。

所以,这里需要有资源控制,将内存能够控制住,不要被无限消耗,最后导致垃圾回收启动,造成系统好像死机。


控制资源就是使用Pool或cache来控制,Spring/JdonFramework下可自行加入; EJB已经默认加入了。

这也是我一直反对使用Jsp+JavaBeans来写复杂或大访问量的系统,至于如何控制服务器资源,只有数据库连接池是不够的,因为Bean才是真正的资源消耗重点。





banq

发表文章: 8920
注册时间: 2002年08月03日 17:08
Re: jsp+javabean能否满足100人使用? 发表: 2006年12月29日 12:51 回复
继续补充:

经过前面基本原理以后,楼主问题可以知道一些答案,我再详细回答如下:

能够满足同时100人访问,关键在于每个请求耗费的资源是否多,这也是相对的,如果你的CPU够强,内存够多,那么可以这个值相对来说低,这也就是可以解释这种情况:你的系统可能经常发生死机,你就采取提高硬件的办法,提高CPU,增大内存,原来系统是每3小时死机,那么现在提高硬件后,可能是不会每3小时死机了,但是会每天或两天死机,因为你根本问题没有解决,硬件提高只是苟延残喘。

这就象以前SAS一样,当初得SAS的人只能靠名贵呼吸机延长寿命,病毒源没有找到啊。

当然,也有侥幸的,虽然每天死机,但是,每天我可以重新启动了,你可以躲避每天死机了,但是注意,如果访问量比以前增加了,那你可能又回到每3小时死机的老路。

这些解决方案都是可以称为没有可伸缩性的,no scalable,我们软件架构一定要注重可伸缩性,这是软件架构重要内容,以前为什么没有架构这个词语,现在特别重视,这也是一个原因,都是失败经验教训,那些不重视架构的人,必然会重蹈覆辙,这些都是因为无知产生的可悲结果。

这也是2003年/2004年极力推荐EJB原因,因为EJB机制本身已经包含了资源控制和优化,如果你理论上对于前面原理不熟悉,选择EJB还能避免你架构方向错误。

如果你理论上属于无知,又狂热追求Spring这些新玩艺(当初),那么,即使你使用Spring,性能还是和Jsp+JavaBeans一样,在大访问量情况下经常死机,因为Spring里面需要手工配置Pool或cache这些资源控制机制。
所幸,JdonFramework只需你实现一个Poolable接口就可以了。

回到可伸缩性话题上,不但架构要考虑单机,还要考虑单机不够怎么办?一味提高单机性能,在不断增长的访问量情况下,还是有单点风险,这是过去集中式主机思维的毛病。

我们需要廉价的,无单点风险的、多机的、集群的软件架构。这才是真正有伸缩性的。

jjaayy

发表文章: 7
注册时间: 2007年01月13日 14:46
Re: jsp+javabean能否满足100人使用? 发表: 2006年12月29日 15:15 回复
请问JavaBeans被创建以后,我们不能通过赋null的方式取消它的引用么?
是否取消引用之后它仍然占用系统的内存?
清除JavaBeans占用的系统内存一定要通过Java的回收机制才能实现么?
banq

发表文章: 8920
注册时间: 2002年08月03日 17:08
Re: jsp+javabean能否满足100人使用? 发表: 2006年12月29日 17:03 回复
>我们不能通过赋null的方式取消它的引用么?
是否取消引用之后它仍然占用系统的内存?
清除JavaBeans占用的系统内存一定要通过Java的回收机制才能实现么

垃圾回收机制的原理是:只回收那些不被引用的对象。内存不通过垃圾回收机制回收,还会其他方式吗?Java不需要象C那样,用完对象后,需要进行清理,所以你的对象赋null只是防止其他地方象这个对象里嵌入新的对象,否则,根本不起任何作用,有点掩耳盗铃。

我以前说过,如果说Java比C方便,因为对象使用之后不需要清理,那么有了IOC/DI依赖注射以后,Java中对象使用之前也不需要创建了。

对象在一般语言中,如果需要使用,必须首先创建,使用完成后,必须清理,这些琐碎的事务困扰开发者的开发效率,现在在Java中无需了。

这些都是因为Java是容器概念的语言,对于容器这个概念,很多不容易接受,而且也很难处理与其互动,从对象清理这个问题就可以看出,所以,使用Java的企业系统缓慢,死机,这些都怪罪Java语言,而不从自己设计思维架构思路上寻找,正是睡不着觉怪床歪啊。


banq

发表文章: 8920
注册时间: 2002年08月03日 17:08
Re: jsp+javabean能否满足100人使用? 发表: 2006年12月29日 17:07 回复
再补充一句:

将对象赋null做法不但不美观,而且是欺骗人的,这句话我经常从IBM/Websphere技术工程师嘴里听到,这里批评一下。注意,不是针对楼上。

看看那些经典的源码,有将对象赋null的语法吗?
banq

发表文章: 8920
注册时间: 2002年08月03日 17:08
Re: jsp+javabean能否满足100人使用? 发表: 2006年12月30日 10:40 回复
关于控制资源,前面提到Pool和cache,当然单例也是一种方式,不过这种方式在J2EE多线程环境下要时刻注意线程安全性,后者是Spring和JdonFramework等IOC容器采取的方式,但是仅仅将业务逻辑Bean使用单例有时不够,还需要Pool支持;除了业务逻辑Bean要控制其资源,数据Bean也要控制,使用cache,每次数据Bean对象获得都从数据库获得,虽然连接池水平再好,也是不具备伸缩性的,Cache才是真正根本解决之道。
xinying_ge

发表文章: 53
注册时间: 2006年09月26日 17:33
Re: jsp+javabean能否满足100人使用? 发表: 2006年12月30日 18:34 回复
一看到cache,我就头大,能不能讲讲?
cain_templar

发表文章: 3
注册时间: 2006年11月30日 21:44
Re: jsp+javabean能否满足100人使用? 发表: 2006年12月30日 23:32 回复
呵呵,banp讲得让人收益菲浅啊. 如果是这样的话,使用很多Web框架的时候会生成很多临时对象, 比如JSF得UIComponent, 也就是说当用户访问量超过一定的时候,内存就会被多余得Component消耗光了吗?
jjaayy

发表文章: 7
注册时间: 2007年01月13日 14:46
Re: jsp+javabean能否满足100人使用? 发表: 2006年12月31日 00:08 回复
是啊,banq是否可以把话题扩展开来,讲讲cache和pool.看你的文章真是受益不浅啊.
banq

发表文章: 8920
注册时间: 2002年08月03日 17:08
Re: jsp+javabean能否满足100人使用? 发表: 2006年12月31日 10:11 回复
>比如JSF得UIComponent, 也就是说当用户访问量超过一定的时候,内存就会被多余得Component消耗光了吗

表现层的对象相比巨无霸的业务Bean,只是小菜一碟,现在JDK改进,所以没有那么严重,当初Struts 2003左右出来的时候,大家也会发现在高负载系统使用它有些性能问题,但是现在这些都可以忽略不计,如果真这样,谁还会用java。

所以,只是针对巨无霸的业务Bean,数量几百,访问量并发100以上这样高负载情况。

其实cache和Pool早在前几年我开展的企业培训中详细讲述了,看我以前的帖子可以知道我这一主导思想,老道友都能够看到的,等新论坛出来后,提供这些相关主题的连接供大家讨论。



leyen

发表文章: 12
注册时间: 2006年09月07日 16:49
Re: jsp+javabean能否满足100人使用? 发表: 2006年12月31日 18:54 回复
论坛要改版?支持
william0218

发表文章: 1
注册时间: 2007年01月04日 16:29
回复:jsp+javabean能否满足100人使用? 发表: 2007年01月04日 16:30 回复
数据库用MySQL吧,它对jsp的支持比MSSQL2000要好很多
thinkjava

发表文章: 108
注册时间: 2007年11月03日 19:22
回复:Re: jsp+javabean能否满足100人使用? 发表: 2007年01月05日 11:34 回复
BAND大哥,现在的WEB容器本身就带有Thread POOL支持呀,我们应该不用考虑Pool方面的问题吧
这个主题有 43 回复 / 3 页 [ 1 2 3 下一页 ]
???en_US.forumThreadPrev.name??? 上一主题
Go back to the topic listing   返回主题列表    返回页首  返回页首
???en_US.forumThreadNext.name??? 下一主题
热点TAG: AOP cache DDD EJB 集群 设计模式 Hibernate IOC JiveJdon OO RBAC Spring Struts
查询本论坛内 回复超过的热门帖子
快速发表回复
标题
 
粗体 斜体 下划线 插入图片 插入代码 插入url链接 插入附件
内容
 

解惑之道在J道 ,打造中国最具影响力的的企业软件社区
OpenSource JIVEJDON v3.0 Powered by JdonFramework Code © 2002-07 jdon.com

anti spam