2013-08-20 72 views
0

我有兩個運行在Tomcat 7.0.5中的Web項目。 第一個項目承載第二個項目中使用的服務(Web服務)。 這兩個項目都分離數據庫,但在同一個Mysql服務器實例上。 使用的技術是Spring,Hibernate。數據庫是Mysql。服務器是Apache Tomcat 7.0.5 最初everthing工作正常。 隨着更多記錄(1-2萬)被添加到數據庫,它開始在線程「ajp-9009-AsyncTimeout」中發出OutOfMemoryError異常和異常java.lang.OutOfMemoryError:Java堆空間錯誤。 我用Google搜索的錯誤,根據解決方案的解釋我更新catalina.bat中的文件如下Java「ajp-9009-AsyncTimeout」java.lang.OutOfMemoryError:Java堆空間錯誤

set JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 
-server -Xms1536m -Xmx1536m 
-XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m 
-XX:MaxPermSize=256m -XX:+DisableExplicitGC" 

set CATALINA_OPTS=-server -Xms256m -Xmx1024m 

但沒有爲我工作。 如何擺脫上述錯誤..? 我做錯了什麼? 而且我還有一個查詢,是否有WebService返回記錄..?

+1

對於外行人,10萬= 100,000 –

回答

0

沒有具體細節,很難確定你的問題。

我會看看像YourKit這樣的工具來分析您的應用程序(您可以獲得免費的30天試用版,ISTR)和VisualVM以深入您的JVM。

,如果你的Web服務需要你的10萬條記錄,使它們成XML/JSON和一個請求/響應發送出去,那麼這是一個很大的數據從數據庫拉,馬歇爾和傳輸。我會調查這個設計,看看這是否是根本問題。

0

當您使用ORM工具來處理數據庫關聯操作時,可以將批量提交限制爲最佳,以防止出現OutOfMemoryError。

另一種可能的情況,我不確定。這可能由於JDBC驅動程序而發生。如果可能的話嘗試使用更新的jdbc驅動程序jar。

相關問題