2010-08-17 57 views
2

我有两个关于Java Web应用程序部署及其对性能影响的问题。 我们在serverA上部署了一个应用程序,其中JSP分解到一个内容目录(这意味着JSP不是WAR的一部分) 问题1:我知道这是一种开发方法,而不是其他任何环境。这是否会导致部署速度放慢?Web应用程序性能和部署体系结构(Java)

现在,内容目录交叉装载(NFS共享)到另一个硬件,然后运行serverB,它也使用JSP作为其内容。 当serverA和serverB都在运行并使用相同内容时,是否会降低性能?

+1

除了性能,主要担心的将是稳定性和冗余。你为什么从NFS运行内容目录? NFS有许多考虑因素需要考虑。文件锁定,时间戳等等。 如果服务器B上的磁盘出现故障,您也将失去服务器A. 这里使用NFS的总体目标是什么? – Keibosh 2010-08-17 15:09:48

+0

内容(包括图像和媒体大约3 GB)由于部署延迟和空间考虑因素而共享。 – 2010-08-17 15:38:19

回答

1

以分解形式(而不是WAR文件)部署JSP并不会影响性能。当部署WAR文件时,它仍然是解压缩的。

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

1

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

0

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

1

爆炸WAR应该会稍微改善部署时间,但服务器在部署时会爆炸WAR文件。

正如其他答复指出的那样,JSP被翻译成servlet,然后编译成.class字节码。这发生在用户第一次访问该JSP时,并且这将为用户产生滞后时间,特别是如果它是一个复杂的页面。最好的解决方法是预编译JSP。