簡體   English   中英

Tomcat 第一次響應慢

[英]First response is slow Tomcat

我制作了一個由 Tomcat 托管的 Java Web 應用程序。 它可以在這個URL上找到。

我遇到的問題是,每當我第一次訪問該頁面時,大約需要 10 秒,而每次訪問后僅需要 100-500 毫秒。 我會說速度的提高是由於瀏覽器緩存,但實際上並非如此,當我也刷新緩存時( ctrl + shift + r )我得到了同樣的快速響應。

然后過了一段時間,大約 5 分鍾,我再次訪問該頁面,它又變慢了。

您可以通過將搜索參數值更改為例如: 1050105110522670400023002200來嘗試對提供的 URL 進行一些測試。

我發現的另一個有趣的事實是,無論有效載荷有多大(將 1050 與 2300 進行比較),時間幾乎總是相同的。 9-10 秒。 所以我假設像 Java Server 這樣的東西必須准備好,這需要時間。

編輯:

我首先認為它可能與 Java/Tomcat 必須加載一些資源有關,然后在一段時間后再次加載 +-3-5 分鍾,因為出於某種原因它卸載了它。 但正如我上面所寫,即使我更改了 URL 查詢字符串(這會在執行期間導致不同的 SQL 查詢),它也會再次加載很長時間。 這個問題可以與數據庫有關嗎? 我正在使用 MySQL。

編輯2:

它更快的原因很可能是服務器緩存。 我有 95% 的把握,那是因為我做了幾個實驗,例如在 2 台計算機上嘗試它等(不,它不是瀏覽器緩存)。 然后我意識到,如果它只有在緩存時才快,那么實際的.executeQuery代碼行需要這么長時間。 即使通過WorkBench等客戶端發出的完全相同的請求僅需 0.285 秒,也需要 10 秒。 因此,我將嘗試使用PreparedStatement或進一步實驗。

內容大小為 200kB。 您需要在前端和后端對其進行優化。

主要問題出在您的后端。 檢查為什么需要這么長時間。

在前端,您可以啟用 gzip 壓縮。 查看 tomcat 文檔了解如何操作。 這將減少下載的大小。

由於瀏覽器緩存,第二次對您來說可能更快。 檢查 Firebug 中的響應代碼,如果響應是 304,則它被緩存。 響應 200 表示它已從服務器加載。

如果您忘記在生產環境中關閉初始 modell-schema 同步選項,例如在Spring -> JPA -> Hibernate -> application-[server].yml-> 中,ORM 系統(如Hibernate )可能會導致啟動速度非常慢

spring:
    jpa:
        hibernate:
            ddl-auto: update

更新

如果您的模型沒有改變,請在生產環境中將“更新”切換為“無”以加快啟動速度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM