2017-08-16 61 views
1

我是新來的Java和tomcat。我正在使用spring mvc在java中開發一個網站。它被部署到運行Tomcat 8的Linux服務器上。當我部署時,一切正常,它連接到數據庫非常好。問題在於該網站似乎很快就會閒置。我無法準確計時,但整個網站閒置只需要大約一分鐘的時間。然後下一個請求非常緩慢,加載我的所有類。我也失去了我的會議。Java Web應用程序似乎很快就進入空閒狀態在Tomcat中

這是一個普遍的現象?這聽起來像我在Java中做錯了什麼? Tomcat的?都?

編輯:StuPointerException的評論來看,我已經更新了我的數據庫連接管理。我現在使用Apache dbcp。如果這能解決問題,我會更新。我想讓我的QA測試人員有足夠的時間來打擊我的網站。

+0

您是否使用連接池連接到數據庫? – StuPointerException

+0

我不確定底層架構,但我使用OracleDataSource進行數據庫連接,通過JDBC運行查詢。每次查詢運行時,我都會打開和關閉連接。值得指出的是,即使加載登錄頁面(沒有連接到數據庫),在閒置時也很慢。 –

+0

由於您的雲提供商限制,可能會發生這種情況。例如,如果您在Heroku上免費提供應用程序,則應用程序將在閒置30分鐘後進入休眠狀態。 –

回答

1

這是很難直接回答你的問題沒有關於您的服務器設置的詳細信息。

對於它的價值不過,每次看到這種行爲是下降到一個錯誤配置的數據庫連接池的時間。創建新的數據庫連接可能會有很大的開銷。

如果不使用連接池,或者您允許在池中連接到死(因缺少驗證查詢/檢查),那麼你將開始看到由於連接超時的性能問題隨着時間的推移。

+0

我絕對認爲數據庫連接可能是一個問題。我會在那裏做更多的研究。我的主要觀點是,這不是Tomcat的默認行爲,對嗎?像一個網站不應該在一分鐘內閒置。它似乎更像是我的代碼而不是Tomcat配置中的一個問題。這聽起來正確嗎? –

+0

是的,這是正確的。 – StuPointerException

+0

我將此標記爲答案。在上面的更新中,我沒有使用任何類型的連接池。我更新了數據庫連接以使用Apache DBCP,並且性能大大提高。該網站現在正在或多或少地運行「正常」。我的QA測試員很高興! 編輯:另外,謝謝你的幫助。 –