【问题标题】:Web application performance and deployment architecture (java)Web 应用程序性能和部署架构 (java)
【发布时间】:2010-08-17 14:08:25
【问题描述】:

关于 Java Web 应用程序部署及其对性能的影响,我有两个问题。 我们在 serverA 上部署了一个应用程序,JSP 被分解到一个内容目录中(这意味着 JSP 不是 WAR 的一部分) 问题 1:我知道这是一种开发方法,而不是任何其他环境。这种爆炸式部署会降低性能吗?

现在,内容目录已交叉安装(NFS 共享)到另一个硬件,我们在那里运行 serverB,它也使用 JSP 来存储其内容。 当 serverA 和 serverB 都在运行并使用相同的内容时,会降低性能吗?

【问题讨论】:

  • 除了性能之外,一个主要问题是稳定性和冗余。为什么要从 NFS 运行内容目录? NFS 有许多需要考虑的因素。文件锁定、时间戳关闭等。如果服务器 B 上的磁盘出现故障,您也将丢失服务器 A。在这里使用 NFS 的总体目标是什么?
  • 内容 - 包括图像和媒体大约 3 GB,由于部署延迟和空间考虑,它是共享的。

标签: java performance glassfish web-applications


【解决方案1】:

从性能角度来看,以分解形式(而不是 WAR 文件)部署 JSP 不会产生任何影响。部署 WAR 文件时,无论如何都会对其进行解包。

将内容(包括 JSP)放在 NFS 挂载的文件系统中会导致对文件的访问,如果您的 NFS 挂载在错误的时间过时,可能会导致操作问题。这将在第一次使用 JSP 时发生,如果您的 JSP 引擎配置为定期检查更改的 JSP,也可能在其他时间发生。

【讨论】:

    【解决方案2】:

    第一次需要任何 jsp 时,它会被编译成一个 servlet 并存储在 web 容器的缓存中(至少 tomcat 会这样做)。由于缓存文件夹不在 NFS 之上,因此不会影响 Web 服务器的性能。不过,预编译 JSP 可能是个好主意。

    【讨论】:

      【解决方案3】:

      分解 WAR 应该会稍微缩短部署时间,但无论如何服务器都会在部署 WAR 文件时分解它。

      正如其他回复所指出的,JSP 被翻译成 servlet,然后编译成 .class 字节码。这发生在用户第一次访问该 JSP 时,并且这为用户产生延迟时间,尤其是如果它是一个复杂的页面。解决此问题的最佳方法是预编译 JSP。

      【讨论】:

        【解决方案4】:

        如果你的应用程序的JSPs是预编译的,并且编译功能在Servlet容器中是关闭的,它不会影响你的应用程序的性能,因为JSPs被编译成它们的.class文件,然后它们会被容器加载。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-03-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-27
          • 1970-01-01
          • 1970-01-01
          • 2018-10-11
          相关资源
          最近更新 更多