论坛首页 Java企业应用论坛

请教大型WEB系统的架构设计和技术选型

浏览 118904 次
精华帖 (1) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (1)
作者 正文
   发表时间:2007-09-06  
davexin 写道
江南白衣,讲的很对,RealTime是对垃圾回收做了优化,目标是使响应时间变短,但是要在长时间运行情况下才能体现它的性能,由于时间紧,昨天我们只运行了半个小时左右,所以并没有体现出他的优越性能。也是一种遗憾吧,我想既然bea敢拿出来买,她如果没有那金刚钻,也不敢拿出来招摇了。


又回到了realtime的定义,并不是很快的意思,而是响应时间是可预计的。

而JVM对响应时间可预计性的影响,主要表现在
1.线程调度受操作系统线程调度的影响
2.垃圾收集引起的暂停

所以jrockit选择了动态垃圾收集,以频繁的收集来换取每次中断时间的减少,所以,对吞吐量来说,是反而会下降的。大部分jvm都有吞吐量优先,短暂停时间两种截然不同的垃圾收集算法。
4 请登录后投票
   发表时间:2007-09-08  
呵呵,是的,更确切的说应该是 响应时间可以预计。看来你们这些java大牛对技术的钻研非常的深呀,佩服!
0 请登录后投票
   发表时间:2007-09-08  
现在正在测试weblogic10和tomcat在64位操作系统上的情况,不过有一点还是很有意思的,weblogic10的 64位安装变成  server100_generic.jar,需要先安装jdk1.5才可以再安装weblogic10,安装好jdk后,然后执行 java -jar server100_generic.jar -mode=console,然后就可以一步步地执行了。在32位操作系统上是server100_linux32.bin
,不需要安装jdk就可以安装。顺便给大家2个可以测试用的weblogic10的license,在附件中。只需要将它们的名字改成license.bea,覆盖原来的就可以了。
1 请登录后投票
   发表时间:2007-09-08  
LZ说的太笼统了,采用什么技术或者什么样的软件和硬件框架,需要看你的要求,你的系统的预计的高峰时段并发数量是多少,对服务器产生多大的压力等,只有这些都清楚了,才能说用什么架构?否则要麽资源浪费,要麽资源紧张。
0 请登录后投票
   发表时间:2007-09-14  
我做了6年的网站开发,没有见过那个网站使用tomcat的,5460 和最初的书生网是,sina sohu 263 163用的全是resin  也就是政府网站使用较多weblogic ,主要是OA
java的并发
http://blogger.org.cn/blog/more.asp?name=hongrui&id=25175

http://blogger.org.cn/blog/more.asp?name=hongrui&id=23973
从实际应用的角度来说。-Xmx大了不是很好,垃圾回收需要更多的时间,但是thread问题就很大,配给JVM的内存数越大,tomcat所能开的thread数就越小,最后出现ava.lang.OutOfMemoryError: unable to create new native thread。根据我在windows下编程经验,windows起的线程栈的大小写在可执行文件头,默认是1M。对于java来说,如果采用默认xss设置,jdk1.4每线程256k, jdk1.5每线程1M。如果设置没有超过1M, 又不是默认设置,那么jdk就会为每个线程分配1M。
对于windows来说,32位使用最大内存为2G,如果你给jvm分1.5G,剩余大约500M,供OS使用,其中windows的dll占了一部分,但是你在JVM创建线程的时候,创建的是OS的线程,他要从剩余的空间中分配内存。如果没有可用内存,出现上述错误。
参看hotspot\src\share\vm\runtime\os.c
{ MutexLocker mu(Threads_lock);
      JavaThread* signal_thread = new JavaThread(&signal_thread_entry);
                                                                                                                             
      // At this point it may be possible that no osthread was created for the
      // JavaThread due to lack of memory. We would have to throw an exception
      // in that case. However, since this must work and we do not allow
      // exceptions anyway, check and abort if this fails.
      if (signal_thread == NULL || signal_thread->osthread() == NULL) {
        vm_exit_during_initialization("java.lang.OutOfMemoryError",
                                      "unable to create new native thread");
      }
公式如下
(MaxProcessMemory - JVMMemory - ReservedOsMemory) / (ThreadStackSize) = Number of threads
解决的办法就是减少-Xmx的数量,减少xss的值,或者开启3GB模式。

最主要的还是程序员的编程,对于网络编程,在nio出来之前,每一个线程只能处理一个socket请求,也就是说一个socket连接需要一个线程,这样使服务器的并发收到了限制,压力不能过大,因为服务器开启thread有限,这造成了tomcat的性能远不如apache。nio出来之后,在一个线程内处理几个连接成为了可能,几乎所有的java的开源web服务器,tomcat6,jetty,resin都用nio重写了网络连接部分,不开源的apusic也用了nio。

0 请登录后投票
   发表时间:2007-09-22  
mfc42d 写道
我做了6年的网站开发,没有见过那个网站使用tomcat的,5460 和最初的书生网是,sina sohu 263 163用的全是resin  也就是政府网站使用较多weblogic ,主要是OA
java的并发
http://blogger.org.cn/blog/more.asp?name=hongrui&id=25175

http://blogger.org.cn/blog/more.asp?name=hongrui&id=23973
从实际应用的角度来说。-Xmx大了不是很好,垃圾回收需要更多的时间,但是thread问题就很大,配给JVM的内存数越大,tomcat所能开的thread数就越小,最后出现ava.lang.OutOfMemoryError: unable to create new native thread。根据我在windows下编程经验,windows起的线程栈的大小写在可执行文件头,默认是1M。对于java来说,如果采用默认xss设置,jdk1.4每线程256k, jdk1.5每线程1M。如果设置没有超过1M, 又不是默认设置,那么jdk就会为每个线程分配1M。
对于windows来说,32位使用最大内存为2G,如果你给jvm分1.5G,剩余大约500M,供OS使用,其中windows的dll占了一部分,但是你在JVM创建线程的时候,创建的是OS的线程,他要从剩余的空间中分配内存。如果没有可用内存,出现上述错误。
参看hotspot\src\share\vm\runtime\os.c
{ MutexLocker mu(Threads_lock);
      JavaThread* signal_thread = new JavaThread(&signal_thread_entry);
                                                                                                                             
      // At this point it may be possible that no osthread was created for the
      // JavaThread due to lack of memory. We would have to throw an exception
      // in that case. However, since this must work and we do not allow
      // exceptions anyway, check and abort if this fails.
      if (signal_thread == NULL || signal_thread->osthread() == NULL) {
        vm_exit_during_initialization("java.lang.OutOfMemoryError",
                                      "unable to create new native thread");
      }
公式如下
(MaxProcessMemory - JVMMemory - ReservedOsMemory) / (ThreadStackSize) = Number of threads
解决的办法就是减少-Xmx的数量,减少xss的值,或者开启3GB模式。

最主要的还是程序员的编程,对于网络编程,在nio出来之前,每一个线程只能处理一个socket请求,也就是说一个socket连接需要一个线程,这样使服务器的并发收到了限制,压力不能过大,因为服务器开启thread有限,这造成了tomcat的性能远不如apache。nio出来之后,在一个线程内处理几个连接成为了可能,几乎所有的java的开源web服务器,tomcat6,jetty,resin都用nio重写了网络连接部分,不开源的apusic也用了nio。


对于tomcat和apache的使用,我觉得要结合起来用apache用过静态页面处理,tomcat用作动态页面处理,如果不用tomcat,用resin 性能也不能提高多少,已经做过tomcat6的性能测试,在32位操作系统下,他的性能还不如tomcat4.1(交易量和响应时间),但在64位操作系统下,tomcat6比tomcat4.1的性能有所提高(交易量增加响应时间变短),但是当用户并发超过600时,响应时间超过了10秒,对我们系统来说已经没有意义。也不是说用了nio就可以提高多少性能,在jdk1.5以后,在64位操作系统上,jdk已经没有最大内存的限制,经过测试,当内存用的比较大的时候,当用到交换分区的时候(linux系统),虚拟机会进行内存回收,此时机器压力是比较大的,整个机器基本上是不再响应请求。这一点我觉得你说得还是非常有道理的。但是个人觉得,resin的性能也不会比tomcat强多少的。如果谁有测试数据,请贴出来交流一下。
0 请登录后投票
   发表时间:2008-03-30  
可以很负责的说,4G内存至强单核双路的服务器,安装apache2 + 2个tomcat5实例,做好动态缓存,对于一般的网站应用,并发1500个好不困难.局域网测试并发2000个平均响应时间都在3秒以下。

大家根本不用怀疑tomcat的性能,我认识的好几个硅谷海龟创业,都用的apache+tomcat+oracle,如yeeyoo.com等。
0 请登录后投票
   发表时间:2008-04-07  
现在用ejb,不都是用无状态的session bean做门面吗
0 请登录后投票
   发表时间:2008-04-07  
8000 写道
对于你你们舍得投入巨资买weblogic,买oracle,买几十台HP OR ibm服务器的项目,最好的办法是拨打范凯先生的电话,告诉他们你们需要咨询,几个月后你总共加起来买2台服务器就可以搞定。

这可能是最最捷径的办法,真的!

这个...虽有广告嫌疑,但的确同意。
找BEA的人来搞测试是有失公允的。
找第三方的人来搞还差不多。
性价比还高呢
0 请登录后投票
   发表时间:2008-04-07  
用LoadRunner只支持1000并发。。。
你还不如用开源的OpenSTA,这东西支持CORBA,可以多台客户机一起跑一个压力测试,估计就没有什么用户限制了。
当然我还从没用过这么大并发的测试,也就没有跑过一台以上的客户机测试。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics