操作系統(tǒng):
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.apache.org/download.cgi
apache_2.2.11
apache-tomcat:
http://tomcat.apache.org/download-60.cgi
apache-tomcat-6.0.18
jboss:
http://www.jboss.org/jbossas/downloads/
JBoss-4.2.3.GA
訪問
靜態(tài)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系統(tǒng)點擊率達不到最大值,測試時使用11臺機55個虛擬用戶。
最高點擊率(hps) | Apache | Tomcat | Jboss | IIS |
Windows | 6093 | 8304 | 8038 | 12660↑ |
Linux | 11680 ↑ | 12051↑ | 11997 ↑ |
|
(“↑”表示點擊率還有上升空間) 本想測試一下動態(tài)頁面,但必須修改配置。用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.apache.org/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區(qū)別聯(lián)系
Apache是普通服務器,本身只支持html即普通網頁。不過可以通過插件支持php,還可以與Tomcat連通(單向Apache連接Tomcat,就是說通過Apache可以訪問Tomcat資源。反之不然)。Apache只支持靜態(tài)網頁,但像asp,php,cgi,jsp等動態(tài)網頁就需要Tomcat來處理。Apache和Tomcat整合使用:如果客戶端請求的是靜態(tài)頁面,則只需要Apache服務器響應請求;如果客戶端請求動態(tài)頁面,則是Tomcat服務器響應請求;因為jsp是服務器端解釋代碼的,這樣整合就可以減少Tomcat的服務開銷。
Apache和Tomcat是獨立的,在通一臺服務器上可以集成。
區(qū)別:
Apache是web服務器,Tomcat是應用(java)服務器,它只是一個servlet容器,是Apache的擴展。Apache和Tomcat都可以做為獨立的web服務器來運行,但是Apache不能解釋java程序(jsp,serverlet)。
兩者都是一種容器,只不過發(fā)布的東西不同:Apache是html容器,功能像IIS一樣;Tomcat是jsp/servlet容器,用于發(fā)布jsp及java的,類似的有IBM的webshere、EBA的Weblogic,sun的JRun等等。
打個比方:Apache是一輛卡車,上面可以裝一些東西如html等。但是不能裝水,要裝水必須要有容器(桶),Tomcat就是一個桶(裝像Java這樣的水),而這個桶也可以不放在卡車上。
Apache是世界使用排名第一的Web服務器。它可以運行在幾乎所有廣泛使用的計算機平臺上。
Apache 源于 NCSAhttpd服務器,經過多次修改,成為世界上最流行的Web服務器軟件之一。Apache取自“apatchyserver”的讀音,意思是充滿補丁的服務器,因為它是自由軟件,所以不斷有人來為它開發(fā)新的功能、新的特性、修改原來的缺陷。Apache的特點是簡單、速度快、性能穩(wěn)定,并可做代理服務器來使用。Apache對Linux的支持相當完美。
Apache有多種產品,可以支持SSL技術,支持多個虛擬主機。Apache是以進程為基礎的結構,進程要比線程消耗更多的系統(tǒng)開支,不太適合于多處理器環(huán)境,因此,在一個ApacheWeb站點擴容時,通常是增加服務器或擴充群集節(jié)點而不是增加處理器。到目前為止Apache仍然是世界上用的最多的Web服務器,市場占有率達60%左右。世界上很多著名的網站如Amazon.com、Yahoo!、W3Consortium、FinancialTimes等都是Apache的產物,它的成功之處主要在于它的源代碼開放、有一支開放的開發(fā)隊伍、支持跨平臺的應用(可以運行在幾乎所有的Unix、Windows、Linux系統(tǒng)平臺上)以及它的可移植性等方面。
Apache的誕生極富有戲劇性。當NCSA WWW服務器項目停頓后,那些使用NCSAWWW服務器的人們開始交換他們用于該服務器的補丁程序,他們也很快認識到成立管理這些補丁程序的論壇是必要的。就這樣,誕生了ApacheGroup,后來這個團體在NCSA的基礎上創(chuàng)建了Apache。如果你準備選擇Web服務器,毫無疑問Apache是你的最佳選擇。
Tomcat是一個開放源代碼、運行servlet和JSP Web應用軟件的基于Java的Web應用軟件容器。TomcatServer是根據(jù)servlet和JSP規(guī)范進行執(zhí)行的,因此我們就可以說TomcatServer也實行了Apache-Jakarta規(guī)范且比絕大多數(shù)商業(yè)應用軟件服務器要好。
Tomcat是Java Servlet 2.2和JavaServer Pages1.1技術的標準實現(xiàn),是基于Apache許可證下開發(fā)的自由軟件。Tomcat是完全重寫的Servlet API 2.2和JSP1.1兼容的Servlet/JSP容器。Tomcat使用了JServ的一些代碼,特別是Apache服務適配器。隨著CatalinaServlet引擎的出現(xiàn),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平臺,企業(yè)版)
**XML=eXtensible Markup Language (擴展標記語言)
**IIS=Internet Information Server(互聯(lián)網信息服務器)