2013-08-20 79 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。

相关问题