2010-11-15 108 views
11

我目前使用Tomcat6作爲開發和生產的Web容器。在生產環境中運行Tomcat

我聽說Tomcat並不是生產環境中性能最好的Web容器。這是真的?

Tomcat是否足以在生產環境中使用性能和內存管理?

我們的系統有大約100到400個用戶。

對我來說,更多關於如何編寫Web-App和Web-App內部的操作類型。

即使性能在一個Tomcat實例上出現問題,是否可以對Tomcat進行集羣?

謝謝。

+2

「聚類」是什麼意思?這是一個有多種解釋的術語。 – skaffman 2010-11-15 08:52:49

+2

這個問題會更適合ServerFault,因爲它是關於sysadmin而不是編程(至少據我瞭解)。 – 2010-11-15 08:52:58

+0

可能您需要查看反向代理。儘管tomcat足夠好,但是如果你想擴展你的應用程序,那麼儘管你使用的是任何容器,但如果你每天處理Tomcat或其他Java應用程序服務器,那麼你需要使用負載平衡 – vinothkr 2010-11-15 09:19:27

回答

14

我目前使用Tomcat6作爲開發和生產的Web容器。

我聽說Tomcat並不是生產環境中性能最好的Web容器。這是真的?

那麼,這又取決於你如何看待它。 Tomcat可以表現得非常好,並且在生產中隨處可見,擁有最大的用戶羣。一些商業應用程序服務器甚至在不告訴你的情況下使用Tomcat。

當然,您不應該將Tomcat開箱即用的性能與調整好的Web容器進行比較。 Tomcat可以進行調整,以獲得比開箱即用狀態更好的性能。你可以谷歌:「雄貓生產」爲例,看看人們如何管理它在實際生產,並得到了很多建議,提示等

是Tomcat的足夠的性能和內存管理對生產中使用的術語環境?

是的。當你需要更多的時候,有很多供應商提供商業版本的Tomcat,包括監控和儀器,以幫助維護你的應用程序的生產。

我們的系統有大約100到400個用戶。

Tomcat可以處理比這更確切的。取決於您的應用程序/系統的性質,您可能需要多個Tomcat實例。在真實的生產環境中,集羣Tomcat是明智之舉。

對我來說,更多的是關於如何編寫Web-App以及Web-App內部的操作類型。

一半的事實。

我相信,當您即將集羣Tomcat時,良好的架構和框架將爲您節省大量時間。因此,在決定如何放置框架堆棧之前,您需要掌握Web容器應用程序的工作方式,集羣如何處理集羣環境中的事情以及集羣如何聚集的一般知識。

  • 在存儲器高速緩存中一個以上的JVM實例
  • 會話存儲器(存儲器,數據庫,文件存儲)和其複製

聚類的Tomcat:

例如問題可能從出現並不是一項簡單的任務,並且不恰當地放置你的框架將會使得後來併入羣集Tomcat變得很困難。

即使性能在一個Tomcat實例上出現問題,是否可以對Tomcat進行集羣?

是的,可以對Tomcat進行羣集。您設計應用程序的方式決定了您的應用程序是否可以輕鬆地進行集羣準備,或者將會更加複雜。這個問題可能不是特定於Tomcat,而是一般的應用服務器。

的一些問題,你可能需要考慮:

  • 你(HTTP)會話存儲什麼數據
  • 在哪裏存儲會話
  • 永葆會議
  • 使用的Web服務器應用程序的負載均衡反向代理,例如Apache網絡服務器+的mod_proxy/mod_jk的,Nginx的,光油
  • 使用哪個Tomcat連接(阻止IO,NIO,APR)

還有一些其他的問題,但我認爲這些都是你可以開始。

3

你是對的,先考慮功能,然後再考慮性能。即使只有一個Tomcat實例也足以滿足這一數量的用戶。而且,是的,clustering Tomcat是可能的。

1

Tomcat只是一個網絡服務器。如果您想要集羣化您的網絡應用程序,您應該查看系統設置並將HTTP調用發送到其他代碼所在的服務器,以卸載主服務器。

這可以通過建立一個不依賴於Web服務器或應用程序的集羣動態環境來實現。

至於Tomcat的表現,我不擔心它,擔心你的代碼,因爲這是90%的瓶頸所在。

+8

Tomcat不僅僅是一個Web服務器。 – 2012-02-16 20:35:24

6

100-400用戶是一個相對較小的部署。我幫助客戶部署Tomcat解決方案,其註冊用戶羣(數以百萬計)或併發用戶數量更多。我甚至不相信您的部署需要集羣。

集羣Tomcat服務器非常簡單。將負載均衡器放在Tomcat服務器的前面。使用會話粘性配置負載平衡器。你將有一個非常好的Tomcat集羣。某些客戶希望會話故障切換以防一個Tomcat實例發生故障,並且用戶可以自動路由到第二個實例而不會丟失會話數據。我認爲這對你的部署已經過分了。事實上,定期維護造成的停機時間將遠遠高於系統故障。我有幾個月的Tomcat服務器運行,只需要引入主要代碼版本。但是如果需要的話,還有支持會話集羣的開源軟件包。說到這一點,大多數J2EE應用程序的性能問題都來源於應用程序本身,而不是Tomcat服務器。我遇到的最多的是Top J2EE Application Performance Problems,這是我在解決客戶端系統性能問題時遇到的問題。希望這個幫助。

+1

一個系統中的100-400用戶可能不適用於其他系統,例如您的部署。這可能是一個「非常繁重」的用法,可能需要集羣。我會信任當前生產系統的實際指標和統計數據,而不是適用於某些其他部署的大拇指規則。 – 2012-10-13 14:21:07