简体   繁体   English

我的应用程序崩溃 tomcat

[英]My application crashes tomcat

After a while and requesting multiple pages I am getting the following error.过了一段时间并请求多个页面后,我收到以下错误。 How can I fix this?我怎样才能解决这个问题?

May 26, 2011 1:02:16 PM org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet Api threw exception java.lang.OutOfMemoryError: GC overhead limit exceeded at com.sun.net.ssl.internal.ssl.InputRecord.<init>(Unknown Source) at com.sun.net.ssl.internal.ssl.AppInputStream.<init>(Unknown Source) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.init(Unknown Source) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.<init>(Unknown Source) at com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl.createSocket(Unknown Source) at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1472) at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1042) at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:817) at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:700) at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:842) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:133) at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:114) at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2836) at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2832) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1843) at de.giz.ff.domain.Subject.findSubject(Subject.java:139) at de.giz.ff.domain.Question.getSubjectName(Question.java:354) at de.giz.ff.server.Api.doFetch(Api.java:66) at de.giz.ff.server.Api.doGet(Api.java:199) at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.ajp.AjpAprProcessor.process(AjpAprProcessor.java:427) May 26, 2011 1:02:27 PM org.apache.catalina.core.ApplicationContext log SEVERE: Exception while dispatching incoming RPC call com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public abstract java.util.ArrayList de.giz.ff.client.FrageFunktionService.getTextsAndRights(int,java.lang.String)' threw an unexpected exception: java.lang.OutOfMemoryError: GC overhead limit exceeded at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:385) at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:588) at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:208) at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248) at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at waffle.servlet.NegotiateSecurityFilter.doFilterPrincipal(Unknown Source) at waffle.servlet.NegotiateSecurityFilter.doFilter(Unknown Source) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:861) at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579) at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1584) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded at java.util.HashMap.<init>(Unknown Source) at org.hibernate.dialect.function.SQLFunctionRegistry.<init>(SQLFunctionRegistry.java:37) at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:212) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1845) at de.giz.ff.domain.Client.findClient(Client.java:49) at de.giz.ff.server.FrageFunktionServiceImpl.getTextsAndRights(FrageFunktionServiceImpl.java:123) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:569)... 21 more

I'd recommend downloading VisualVM 1.3.2 , installing all its plugings, and pointing it at your Tomcat app to see what's happening.我建议下载VisualVM 1.3.2 ,安装它的所有插件,并将其指向您的 Tomcat 应用程序以查看发生了什么。 It'll let you see the different memory generations, what objects are being allocated, what threads are running, etc. It's a wealth of information.它会让你看到不同的 memory 代,正在分配哪些对象,正在运行哪些线程等。这是一个丰富的信息。

I see Hibernate and SQL Server in your stack trace.我在堆栈跟踪中看到 Hibernate 和 SQL 服务器。 I'm betting that Hibernate reflection is rapidly filling up your perm space.我打赌 Hibernate 反射正在迅速填满你的烫发空间。

Looks like your application is using too much memory.看起来您的应用程序使用了过多的 memory。 You could try increasing the amount of memory Tomcat is allocated.您可以尝试增加分配的 memory Tomcat 的数量。 If you installed Tomcat on Windows as a service it's fairly easy to do this using the Tomcat monitor, otherwise I think you will need to edit a config file .如果您将 Tomcat 作为服务安装在 Windows 上,则使用 Tomcat 监视器很容易做到这一点,否则我认为您将需要编辑配置文件

I should point out that if your application has a memory leak, however much memory you allocate Tomcat it will eventually crash.我应该指出,如果您的应用程序有 memory 泄漏,无论您分配多少 memory,它最终都会崩溃。 You should check your application as well to ensure you're not creating lots of objects in memory which cannot be destroyed.您还应该检查您的应用程序,以确保您没有在 memory 中创建大量无法销毁的对象。

it seems your Garbage Collector cant allow more memory, try to allow more memory in the setenv.sh or you may have a memory leak看来您的垃圾收集器不能允许更多 memory,尝试在 setenv.sh 中允许更多 memory 或者您可能有 memory 泄漏

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM