2012-12-17 52 views
2

我想設計一個web應用程序(使用java,spring,hibernate和mySQL)。數據量非常大。因此,對於每個客戶端,我希望在同一臺服務器上或不同節點上創建單獨的數據庫。 我試過這個使用java,spring,hibernate和mySQL。但是JVM需要大量內存,並且有時會引發「堆空間不足」的異常。java web應用程序中的多個數據庫連接

有沒有更好的方法來管理使用上述堆棧的多個數據庫連接?

+0

您需要添加更多細節。就像你試過多少內存它已經在消耗?什麼servlet容器?做一個jstack轉儲和jvisualvm和報到 –

回答

0

如果您使用的是tomcat,您可以增加堆空間,只需創建一個名爲JAVA_OPTS的環境變量,併爲堆指定最小值(Xms)和最大值(Xmx):例如JAVA_OPTS =「 - Xms128m -Xmx512m - XX:MaxPermSize = 512m「(注意:Xms和大小之間沒有空格)

+0

我已經設置-Xms780m -Xmx1024m -XX:MaxNewSize =780米 -XX:MaxPermSize參數=512米 -XX:SurvivorRatio = 8 -XX:CodeCacheMinimumFreeSpace =對不起!我想要在春季和冬眠+ mySQL中實現多個數據庫連接的正確方法。 –

+0

@AnantNavagale您可能需要將其設置得更高,才能使用該系統的大部分內存。根據我的經驗,最好使用超過1024MB的64位Java,或者可能有泄漏? – xer21

+2

小心使用-XX:MaxPermSize,可能MaxNewSize,因爲它們會從堆中分離出來。所以,780和512正在從你的Xmx1025大塊。我有一個過程,即使我已經超出了最大限度,但仍然耗盡堆積,問題是我最大化了MaxPermSize,並將MaxPerm降低到約192固定的問題。嘗試使用jvisualvm來查看進程的內存使用情況。我覺得它非常翔實。 –

0

您應該使用應用服務器提供的連接池,以便它們可以幫助您更好地管理數據庫連接。

+0

我已經使用DBCP連接池,建議在Apache網站上。我只是在春季和hibernate + mySQL中實現多個數據庫連接的正確方法 –

相關問題