在多个 Web 应用程序之间共享应用程序服务器 (tomcat) 是否存在风险

Is there a risk from sharing Application server (tomcat) between more that web applications

我想在共享的应用程序中使用多个副本 tomcat 而且我想增加内存大小,那么此操作是否有任何风险?? 如何提高性能?

会话切换, 安全, 正直, 性能问题, 线程风险, 死锁

实际上可能只有性能影响。如果您不在不同的应用程序之间共享您的一个线程池(您可以在 tomcat 中执行此操作),您应该不会收到任何 Thread/Deadlocks 风险。

但在性能影响下 — 我的意思是与在不同服务器上启动应用程序进行比较。在单个 tomcat 上启动几个应用程序或在机载单个应用程序上启动几个 tomcat 之间没有显着的性能差异。

但是:至少有一些限制:

  • 您不能使用不同版本的共享库。如果你查看 tomcat 中的 ./lib 文件夹——有一些库,如 jsp-api、servlet-api、jasper。 如果您的应用程序仅限于使用不同的特定版本——这可能是一个问题(也可以解决,但这是附加限制)。
  • 到 reload/update 一个应用程序在某些情况下您需要重新加载 tomcat,因此您需要 stop/start 托管在此 tomcat 上的所有应用程序。

其中一项好处是在一个应用程序中启动几个应用程序 tomcat — 您可以节省一些 RAM。示例:如果您的应用程序很少使用相同的库——您可以将其移动到 ./lib 文件夹中,这样该库将仅在内存中被提取一次(而不是每个应用程序一次)。

P.S。 Web 应用程序可以以多种方式托管,我个人更喜欢两个概念:在使用 SOA/microservice 架构或在单个 tomcat 上托管少量应用程序的情况下,许多具有嵌入式 Web 服务器的微服务(tomcat/jetty)在其他方面。

会话切换:- 无影响

安全性:- 无影响

完整性:- 无影响

性能问题:- 是的,会有影响,因为单个网络服务器必须处理所有 request.I 以这种方式看待它 cpu 一个 tomcat 与两个单独的 tomcat。此外,每个应用程序都需要一些内存,因此您还需要调整内存设置。参见 Multiple applications in single Tomcat vs multiple instances of tomcat

线程风险:- 无影响

死锁:- 无影响