分享

Apache Tomcat Jboss 静态页面访问 性能比较

 Lucia‘s doc 2011-12-20
操作系统
    Windows:
    Windows Server 2003, Enterprise Edition (5.2, Build 3790) Service Pack 2 (3790.srv03_sp2_gdr.070304-2240) _32bits
    Linux:
    CentOS release 5.2 (Final) /Linux 2.6.18-92.el5 #1 SMP Tue Jun 10 18:51:06 EDT 2008 x86_64 x86_64 x86_64 GNU/Linux

硬件配置

    两台服务器配置相同,CPU:Xeon2.0×4 MEM:4G,其它配置略。

应用程序
apache:
    http://httpd./download.cgi
    apache_2.2.11
apache-tomcat:
    http://tomcat./download-60.cgi
    apache-tomcat-6.0.18
jboss:
    http://www./jbossas/downloads/
    JBoss-4.2.3.GA

访问静态HTML页面
<html>
    <head>
        <title>html page</title>
    </head>
    <body>
        <h1>Hello World !</h1>
    </body>
</html>

测试脚本
TestMain(){
   web_reg_find("Fail=NotFound","Search=Body","Text=Hello World",LAST);
   lr_start_transaction("default_htm");
   web_url("default.htm",
        "URL=http://testserver:8080/default.htm",
        "Resource=0","RecContentType=text/html",
        "Referer=","Mode=HTML", LAST);
   lr_end_transaction("default_htm", LR_AUTO);
}

应用程序使用默认配置。
测试Windows使用10台机器40个虚拟用户,由于使用相同场景测试Linux系统点击率达不到最大值,测试时使用11台机55个虚拟用户。

最高点击率(hps) Apache Tomcat Jboss IIS
Windows 6093 8304 8038 12660↑
Linux 11680 ↑ 12051↑ 11997 ↑

(“↑”表示点击率还有上升空间)

本想测试一下动态页面,但必须修改配置。用JSP页面小压了一下,内存溢出:
Tomcat:
    Exception in thread "RMI TCP Connection(idle)" Exception in thread"RMI TCP Connection(idle)" java.lang.OutOfMemoryError: Java heapspacejava.lang.OutOfMemoryError: Java heap space
    Exception in thread "RMI TCP Connection(idle)"java.lang.OutOfMemoryError: Javaheap spaceException in thread "RMI TCPConnection(idle)" java.lang.OutOfMemoryError: Javaheap space
Jboss:
    ERROR [[/]] Session event listener threw exception
    java.lang.OutOfMemoryError: Java heap space
测试配置又是一个大工程,专门作个话题。
============================================

Tomcat配置Https访问


1. 生成证书

在命令行运行命令JAVA_HOME/bin/keytool -genkey -alias tomcat-keyalg
RSA -keystore C:\Tomcat\GMAE3.0Tomcat\tomcat.keystore(指定一个位置)
这样就生成了证书,将证书放到合适的地方(任意地方都可以)

 

2. 配置server.xml

找到关于ssl的相关段,去掉注释,添keystoreFile="C:\Tomcat\GMAE3.0Tomcat\tomcat.keystore"
keystorePass="tomcat"的属性
   <Connectorprotocol="org.apache.coyote.http11.Http11Protocol" port="8443"maxHttpHeaderSize="8192"
              maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
              enableLookups="false" disableUploadTimeout="true"
              acceptCount="100" scheme="https" secure="true"
              clientAuth="false" sslProtocol="TLS"keystoreFile="D:\TRS\TRSIDS3500_trunk_https\tomcat.keystore"algorithm="SunX509"keystorePass="trsadmin"/>

tomcat不同版本配置是不同的

Tomcat4.1.34配置:

<ConnectorclassName="org.apache.coyote.tomcat4.CoyoteConnector"  

         port="8443"enableLookups="true"scheme="https"secure="true"  acceptCount="100"   useURIValidationHack="false"disableUploadTimeout="true"  clientAuth="false"sslProtocol="TLS"  keystoreFile="server.keystore"   keystorePass="changeit"/>  

Tomcat5.5.9 配置:

<Connectorport="8443"maxHttpHeaderSize="8192"   

 maxThreads="150"minSpareThreads="25"maxSpareThreads="75"  

enableLookups="false"disableUploadTimeout="true"  

acceptCount="100"scheme="https"secure="true"  

clientAuth="false"sslProtocol="TLS"  

keystoreFile="server.keystore"  

keystorePass="changeit"/>  

Tomcat5.5.20配置(此配置同样可用于Tomcat6.0)   

<Connectorprotocol="org.apache.coyote.http11.Http11Protocol"  

 port="8443"maxHttpHeaderSize="8192"  

maxThreads="150"minSpareThreads="25"maxSpareThreads="75"  

 enableLookups="false"disableUploadTimeout="true"  

 acceptCount="100"scheme="https"secure="true"  

clientAuth="false"sslProtocol="TLS"                  

 keystoreFile="server.keystore"  

 keystorePass="changeit"/>  

Tomcat6.0.10 配置:

<Connectorprotocol="org.apache.coyote.http11.Http11NioProtocol"  

 port="8443"minSpareThreads="5"maxSpareThreads="75"  

 enableLookups="true"disableUploadTimeout="true"  

 acceptCount="100"  maxThreads="200"  

 scheme="https"secure="true"SSLEnabled="true"  

 clientAuth="false"sslProtocol="TLS"  

 keystoreFile="D:/tools/apache-tomcat-6.0.10/server.keystore"  

 keystorePass="changeit"/>  

tomcat6支持3种,请参考以下文档:
http://tomcat./tomcat-6.0-doc/ssl-howto.html

3. 重启tomcat就能使用HTTPS访问

 

4. 强制https访问

在tomcat\conf\web.xml中的</welcome-file-list>后面加上这样一段:

<login-config>

  <!--AuthorizationsettingforSSL-->

  <auth-method>CLIENT-CERT</auth-method>

  <realm-name>ClientCertUsers-onlyArea</realm-name>

</login-config>

<security-constraint>

  <!--AuthorizationsettingforSSL-->

  <web-resource-collection>

    <web-resource-name>SSL</web-resource-name>

       <url-pattern>/*</url-pattern>

    </web-resource-collection>

    <user-data-constraint>

        <transport-guarantee>CONFIDENTIAL</transport-guarantee>

     </user-data-constraint>

</security-constraint>

==================================

如何同时启动多个Tomcat服务器


工作中有时候需要同时启动多个Tomcat服务器,这样对于一些不熟悉的Tomcat服务器的新手管理员确实是一个困难的问题,下面对于该问题的解决有相应小技巧供参考:

所用Tomcat服务器都为zip版,非安装版。以两个为例:

安装第二个Tomcat完成后,到安装目录下的conf子目录中打开server.xml文件,查找以下三处:

(1)修改http访问端口(默认为8080端口)

minProcessors="5"maxProcessors="75"

enableLookups="true"redirectPort="8443"

acceptCount="100" debug="0"connectionTimeout="20000"

useURIValidationHack="false"disableUploadTimeout="true" />

(大概在86行左右)将8080修改为第一个tomcat不在使用的端口号。此处所设的端口号即是以后访问web时所用的端口号。

(2)修改Shutdown端口(默认为8005端口)

(大概在13行左右)将8005修改为没有在使用的端口号,例如8095

(3)修改8009端口

< ConnectorclassName ="org.apache.coyote.tomcat4.CoyoteConnector"

port ="8009" minProcessors ="5"maxProcessors ="75"

enableLookups ="true" redirectPort="8443"

acceptCount ="10" debug ="0"connectionTimeout ="20000"

useURIValidationHack="false"

protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>

(大概在107行左右)将8009修改为没有在使用的端口号,例如8099

这样就没问题了。
=======================================

tomcat和apache区别联系

Apache是普通服务器,本身只支持html即普通网页。不过可以通过插件支持php,还可以与Tomcat连通(单向Apache连接Tomcat,就是说通过Apache可以访问Tomcat资源。反之不然)。Apache只支持静态网页,但像asp,php,cgi,jsp等动态网页就需要Tomcat来处理。Apache和Tomcat整合使用:如果客户端请求的是静态页面,则只需要Apache服务器响应请求;如果客户端请求动态页面,则是Tomcat服务器响应请求;因为jsp是服务器端解释代码的,这样整合就可以减少Tomcat的服务开销。
  Apache和Tomcat是独立的,在通一台服务器上可以集成。
  区别:
  Apache是web服务器,Tomcat是应用(java)服务器,它只是一个servlet容器,是Apache的扩展。Apache和Tomcat都可以做为独立的web服务器来运行,但是Apache不能解释java程序(jsp,serverlet)。
  两者都是一种容器,只不过发布的东西不同:Apache是html容器,功能像IIS一样;Tomcat是jsp/servlet容器,用于发布jsp及java的,类似的有IBM的webshere、EBA的Weblogic,sun的JRun等等。
  打个比方:Apache是一辆卡车,上面可以装一些东西如html等。但是不能装水,要装水必须要有容器(桶),Tomcat就是一个桶(装像Java这样的水),而这个桶也可以不放在卡车上。
  Apache是世界使用排名第一的Web服务器。它可以运行在几乎所有广泛使用的计算机平台上。
  Apache 源于 NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取自“apatchyserver”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。Apache对Linux的支持相当完美。
  Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个ApacheWeb站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。到目前为止Apache仍然是世界上用的最多的Web服务器,市场占有率达60%左右。世界上很多著名的网站如Amazon.com、Yahoo!、W3Consortium、FinancialTimes等都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。
  Apache的诞生极富有戏剧性。当NCSA WWW服务器项目停顿后,那些使用NCSAWWW服务器的人们开始交换他们用于该服务器的补丁程序,他们也很快认识到成立管理这些补丁程序的论坛是必要的。就这样,诞生了ApacheGroup,后来这个团体在NCSA的基础上创建了Apache。如果你准备选择Web服务器,毫无疑问Apache是你的最佳选择。
  Tomcat是一个开放源代码、运行servlet和JSP Web应用软件的基于Java的Web应用软件容器。TomcatServer是根据servlet和JSP规范进行执行的,因此我们就可以说TomcatServer也实行了Apache-Jakarta规范且比绝大多数商业应用软件服务器要好。
  Tomcat是Java Servlet 2.2和JavaServer Pages1.1技术的标准实现,是基于Apache许可证下开发的自由软件。Tomcat是完全重写的Servlet API 2.2和JSP1.1兼容的Servlet/JSP容器。Tomcat使用了JServ的一些代码,特别是Apache服务适配器。随着CatalinaServlet引擎的出现,Tomcat第四版号的性能得到提升,使得它成为一个值得考虑的Servlet/JSP容器,因此目前许多WEB服务器都是采用Tomcat。
  **JSP=Java Server Pages (Java服务器网页)
  **ASP=Active Server Pages (活动服务器网页)
  **CGI=Common Gateway Interface (通用网关接口)
  **J2EE=Java 2 Platform, Enterprise Edition (Java2平台,企业版)
  **XML=eXtensible Markup Language (扩展标记语言)
  **IIS=Internet Information Server(互联网信息服务器)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多