我有一個使用Java servlet編寫的Web應用程序。我使用Tomcat 7作爲我的servlet引擎,但以前使用過Glassfish並且具有完全相同的問題。Java Web應用程序緩慢MySQL查詢
有問題的頁面有一個「統計」部分,每5分鐘更新一次。由於涉及的MySQL表的大小,統計信息需要大約30秒才能生成。
當我得到一個頁面加載時,我顯示緩存的統計信息。在頁面中的所有內容都被渲染之後,我會刷新然後關閉輸出流。然後我更新統計數據。這樣,沒有用戶需要等待約30秒才能加載頁面,統計信息在頁面已經完全發送後纔會更新。
問題是,如果刷新頁面時,它正在運行查詢,頁面不會加載,直到查詢完成,這意味着雖然初始用戶沒有任何延遲,之後有一個長時間延遲。
爲什麼應用程序有效拖延?即使一個線程仍然忙,Tomcat是否應該能夠使用另一個工作線程來處理請求?
謝謝。
你說這個問題確實很好。但是我們仍然需要知道如何創建執行查詢。我懷疑問題出在一個阻止每個人的同步方法。分享一些代碼! –