簡體   English   中英

我的應用程序崩潰 tomcat

[英]My application crashes tomcat

過了一段時間並請求多個頁面后,我收到以下錯誤。 我怎樣才能解決這個問題?

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

我建議下載VisualVM 1.3.2 ,安裝它的所有插件,並將其指向您的 Tomcat 應用程序以查看發生了什么。 它會讓你看到不同的 memory 代,正在分配哪些對象,正在運行哪些線程等。這是一個豐富的信息。

我在堆棧跟蹤中看到 Hibernate 和 SQL 服務器。 我打賭 Hibernate 反射正在迅速填滿你的燙發空間。

看起來您的應用程序使用了過多的 memory。 您可以嘗試增加分配的 memory Tomcat 的數量。 如果您將 Tomcat 作為服務安裝在 Windows 上,則使用 Tomcat 監視器很容易做到這一點,否則我認為您將需要編輯配置文件

我應該指出,如果您的應用程序有 memory 泄漏,無論您分配多少 memory,它最終都會崩潰。 您還應該檢查您的應用程序,以確保您沒有在 memory 中創建大量無法銷毀的對象。

看來您的垃圾收集器不能允許更多 memory,嘗試在 setenv.sh 中允許更多 memory 或者您可能有 memory 泄漏

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM