2008-11-04 87 views
2

我正在維護一個網站,目前約有800個併發用戶。商業計劃表示,這一數字在一年內將增加10倍。Tomcat Web服務器的最佳設置是什麼?

這是我的當前配置:

<Connector port="8080" address="${jboss.bind.address}" 
    maxThreads="500" maxHttpHeaderSize="8192" 
    emptySessionPath="true" protocol="HTTP/1.1" 
    enableLookups="false" redirectPort="8443" acceptCount="100" 
    connectionTimeout="20000" disableUploadTimeout="true" /> 

<Connector port="8443" address="${jboss.bind.address}" 
    protocol="HTTP/1.1" SSLEnabled="true" 
    maxThreads="500" minSpareThreads="5" maxSpareThreads="25" 
    scheme="https" secure="true" clientAuth="false" 
    keystoreFile="${jboss.server.home.dir}/conf/ks.p12" 
    keystoreType="PKCS12" connectionTimeout="20000" 
    keystorePass="pass" sslProtocol="TLS" acceptCount="100" /> 

平均使用的線程數爲約400(對於每個HTTP/HTTPS)。但峯值確實使用500個線程。當我得到10x用戶時,我想我會陷入困境:-)

  • 我該如何調整?
  • 我應該禁用http保持活着嗎?我如何配置保持活動超時?
  • 什麼值對acceptCount/maxThreads有好處?
+0

由於拒絕完美的答案,您不能提供足夠的信息,例如「出於政策原因」。你飽和CPU嗎?網絡?否則,只需設置maxThreads = 15000「。加快你的應用程序以便早些時候釋放線程。(如果你這樣做)無需投票下你不喜歡的答案... – 2008-11-05 08:34:08

回答

1

您可以使用JMeter對此進行調整。我認爲很大程度上取決於您的特定硬件設置。 擴大您的網站的一種可能的方式是添加機器。請查看Velocity ConferenceHigh Scalability website

+0

是的我知道我可以用更多的機器進行擴展。但是,首先我想充分利用已經在使用的硬件 – Marcel 2008-11-04 12:00:07

4

我認爲在Apache Http服務器中放置tomcat是更健壯和更快的方法。這裏是專業人士&利弊http://wiki.apache.org/tomcat/FAQ/Connectors

爲什麼要將Apache與Tomcat集成? (或不)

將Tomcat與Apache集成有很多原因。有理由不這樣做。不用說,每個人都會不同意這裏的觀點。隨着Tomcat 5和6的表現,性能原因變得更難以證明。所以這裏是要討論的問題集成與否。

  • 聚類。通過使用Apache作爲前端,您可以讓Apache充當您的內容到多個Tomcat實例的前門。如果你的某個雄貓失敗了,Apache會忽略它,並且你的系統管理員可以在整夜之內休息。如果您使用硬件負載均衡器和Tomcat的羣集功能,則可以忽略這一點。
  • 集羣/安全。您還可以使用Apache作爲不同Tomcat的前門,用於不同的URL名稱空間(/ app1 /,/ app2 /,/ app3 /或虛擬主機)。 Tomcats可以分別位於一個受保護的區域,從安全的角度來看,您只需要擔心Apache服務器。本質上,Apache成爲一個智能代理服務器。
  • 安全。這個主題可以擺脫任何一種方式。 Java擁有安全管理員,而Apache在安全性方面擁有更大的思想和更多技巧。我不會更詳細地討論這個問題,但讓Google成爲你的朋友。根據你的情況,一個可能比另一個更好。但是請記住,如果您使用Tomcat運行Apache,則您有兩個系統可以進行防禦,而不是一個。
  • 加載項。在CGI,perl上添加PHP對於Apache來說非常自然。它對於Tomcat來說更慢,更多是一團糟。 Apache還有數百個可以隨意插入的模塊。 Tomcat可以擁有這種能力,但代碼還沒有寫完。
  • 裝修工!使用Tomcat前面的Apache,您可以執行任何Tomcat不支持或不具有即時代碼支持的裝飾器。例如,可以爲Tomcat編寫mod_headers,mod_rewrite和mod_alias,但爲什麼在Apache做得這麼好時重新發明輪子?
  • 速度。 Apache在提供靜態內容方面比Tomcat更快。但是除非你有一個高流量網站,否則這一點是沒有用的。但在某些情況下,tomcat可能比apache更快。所以基準你的網站。
  • 套接字處理/系統穩定性。與Tomcat相比,Apache在錯誤條件方面擁有更好的套接字處理能力。主要原因是Tomcat必須通過需要跨平臺的JVM執行其所有套接字處理。問題是套接字優化是一個特定於平臺的考驗。大多數情況下,java代碼沒有問題,但是當你也被丟棄的連接,無效的數據包,無效IP的無效請求轟炸時,Apache在比基於JVM的程序丟棄這些錯誤條件方面做得更好。 (因人而異)
+0

非常好的apache營銷,但我堅持使用tomcat ...公司政策:-) – Marcel 2008-11-04 16:35:15

+0

公司政策否認解決明顯的問題?你甚至不允許將apache作爲前端基準,服務於靜態內容?哇, – 2008-11-05 08:39:09

1

我也想看看調整基礎JVM,而不僅僅是tomcat-退房this question一些好的建議,特別是圍繞垃圾收集和內存分配。根據我的經驗,JVM調優比調整Tomcat內部更有效。

相關問題