2010-08-17 74 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。