2015-06-04 88 views
-2

我想在共享的tomcat 中使用多個類似應用程序的副本,並且我想增加內存大小,那麼是否存在任何風險這個動作? 我如何提高性能?在更多的Web應用程序之間共享應用程序服務器(tomcat)是否存在風險

會話切換, 安全, 完整性, 性能問題, 線程風險, 死鎖

+1

你爲什麼要這麼做?這是一個佔用空間非常小的servlet容器,您應該可以輕鬆地運行多個實例。在將多個應用程序部署到同一臺服務器時,可能遇到各種各樣的問題。如果一個應用程序崩潰了jvm,那麼所有其他應用程序關閉。如果您需要重新啓動服務器,則所有應用程序都將停機。一般規則應該是每個應用程序的一個服務器。 –

回答

1

其實有可能是唯一的表現影響。如果您不在不同的應用程序之間共享您的一個線程池(您可以在tomcat中執行此操作),則不應該收到任何線程/死鎖風險。

但是在性能影響下 - 我的意思是與在不同服務器上啓動應用程序進行比較。在單個tomcat上啓動少量應用程序或在板上啓動幾個應用程序之間沒有顯着的性能差異。

但是:至少有幾個限制:

  • 你不能使用不同版本的共享庫。如果您在tomcat中查找./lib文件夾 - 有一些庫,如jsp-api,servlet-api,jasper。 如果你的應用程序限於使用不同的特定版本 - 它可能是一個問題(它也可以解決,但它是附加限制)。
  • 要在某些情況下重新加載/更新一個應用程序,您需要重新加載tomcat,因此您需要停止/啓動此tomcat上託管的所有應用程序。

有一個優點在一個tomcat中啓動幾個應用程序 - 您可以節省一些RAM。例如:如果您的應用程序很少使用相同的庫 - 您可以將它移動到./lib文件夾中,這樣該庫將僅在內存中被拾取一次(而不是每個應用程序一次)。

P.S.個人而言,我個人更喜歡兩個概念:在使用SOA /微服務架構的情況下,使用嵌入式web服務器(tomcat/jetty)的許多微服務,或以其他方式在單個tomcat上託管少量應用程序。

1

會話切換: - 無影響

安全性: - 無影響

完整性: - 無影響

性能問題: - 是會有影響,因爲單一的Web服務器必須處理所有請求。我以這種方式看待cpu cylce給予一個tomcat vs兩個單獨的tomcat。此外,每個應用程序都需要一些內存,因此您還需要調整內存設置。見Multiple applications in single Tomcat vs multiple instances of tomcat

線程風險: - 無影響

死鎖: - 無影響

+0

沒有線程風險?如果一個應用程序佔用所有接受線程會怎麼樣? – Mikaveli

+0

安全。反思啓動堆轉儲? – Mikaveli

+0

「如果一個應用程序佔用所有接受線程會怎麼樣?」這會影響性能。不是嗎? –

相關問題