宝兰德BES应用服务器部署应用日志报错`GC overhead limit exceeded Command deploy failed. java.lang.OutOfMemoryErro的处理办法

在BES应用服务器上部署应用时,应用没有部署成功,通过查看安装目录下的服务器的log以及对应实例的log内容,发现:

服务器的server.log ,cat /opt/BES9/logs/server.log

####|2022-12-28 09:52:48.149|INFO|javax.enterprise.system.tools.deployment|_ThreadName=httpWorkThread-0.0.0.0-6900-40|Deploy application ntkoSignServer on target(s) `[testIns]`!|####
####|2022-12-28 09:53:50.823|ERROR|javax.enterprise.system.tools.deployment|_ThreadName=httpWorkThread-0.0.0.0-6900-40|Failure to deploy application ntkoSignServer on target(s) `testIns`!|####
com.bes.enterprise.cluster.deployment.DeploymentException: Failure to deploy application ntkoSignServer on target(s) `testIns`!
        at com.bes.enterprise.cluster.deployment.core.BaseDeploymentPhaseProcessor.getDeployFailureOnTargetsException(BaseDeploymentPhaseProcessor.java:567) ~[bes-cluster-deployment-manager.jar:?]
        at com.bes.enterprise.cluster.deployment.core.BaseDeploymentPhaseProcessor.logDeploymentPhaseProcessResult(BaseDeploymentPhaseProcessor.java:547) [bes-cluster-deployment-manager.jar:?]
        at com.bes.enterprise.cluster.deployment.core.DeployApplicationProcessor.doProcess(DeployApplicationProcessor.java:241) [bes-cluster-deployment-manager.jar:?]
        at com.bes.enterprise.cluster.deployment.core.BaseDeploymentPhaseProcessor.process(BaseDeploymentPhaseProcessor.java:177) [bes-cluster-deployment-manager.jar:?]
        at com.bes.enterprise.cluster.deployment.core.ApplicationDeploymentManager.deploy(ApplicationDeploymentManager.java:121) [bes-cluster-deployment-manager.jar:?]
        at com.bes.enterprise.cluster.admin.command.deployment.DeployApplicationCommand.handleDeploy(DeployApplicationCommand.java:335) [bes-cluster-admin-command.jar:?]
        at com.bes.enterprise.cluster.admin.command.deployment.DeployApplicationCommand.doExecute(DeployApplicationCommand.java:319) [bes-cluster-admin-command.jar:?]
        at com.bes.enterprise.cluster.command.api.BaseAdminCommand.execute(BaseAdminCommand.java:61) [bes-cluster-command-api.jar:?]
        at com.bes.enterprise.console.service.impl.AdminCommandExecutorHelper.executeAdminCommandWithResponse(AdminCommandExecutorHelper.java:191) [classes/:?]
        at com.bes.enterprise.console.service.impl.ApplicationResourceServiceImpl.deployApplication(ApplicationResourceServiceImpl.java:129) [classes/:?]
        at com.bes.enterprise.console.configurations.applications.application.action.ApplicationAction.deployApplication(ApplicationAction.java:569) [classes/:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_281]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_281]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_281]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_281]
        at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:222) [spring-web-4.1.9.RELEASE.jar:4.1.9.RELEASE]
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137) [spring-web-4.1.9.RELEASE.jar:4.1.9.RELEASE]
        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) [spring-webmvc-4.1.9.RELEASE.jar:4.1.9.RELEASE]
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:775) [spring-webmvc-4.1.9.RELEASE.jar:4.1.9.RELEASE]
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:705) [spring-webmvc-4.1.9.RELEASE.jar:4.1.9.RELEASE]
        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) [spring-webmvc-4.1.9.RELEASE.jar:4.1.9.RELEASE]
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) [spring-webmvc-4.1.9.RELEASE.jar:4.1.9.RELEASE]
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) [spring-webmvc-4.1.9.RELEASE.jar:4.1.9.RELEASE]
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:965) [spring-webmvc-4.1.9.RELEASE.jar:4.1.9.RELEASE]
        at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:867) [spring-webmvc-4.1.9.RELEASE.jar:4.1.9.RELEASE]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:661) [bes-embed-core.jar:?]
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:841) [spring-webmvc-4.1.9.RELEASE.jar:4.1.9.RELEASE]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) [bes-embed-core.jar:?]
        at com.bes.enterprise.webtier.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) [bes-embed-core.jar:?]
        at com.bes.enterprise.webtier.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [bes-embed-core.jar:?]
        at com.bes.enterprise.console.core.action.BaseActionFilter.doFilter(BaseActionFilter.java:145) [classes/:?]
        at com.bes.enterprise.webtier.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [bes-embed-core.jar:?]
        at com.bes.enterprise.webtier.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [bes-embed-core.jar:?]
        at com.bes.enterprise.webtier.core.ServletWrapperValve.invoke(ServletWrapperValve.java:198) [bes-embed-core.jar:?]
        at com.bes.enterprise.webtier.core.ServletContextValve.invoke(ServletContextValve.java:96) [bes-embed-core.jar:?]
        at com.bes.enterprise.webtier.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496) [bes-embed-core.jar:?]
        at com.bes.enterprise.webtier.core.VirtualHostValve.invoke(VirtualHostValve.java:140) [bes-embed-core.jar:?]
        at com.bes.enterprise.webtier.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) [bes-embed-core.jar:?]
        at com.bes.enterprise.webtier.core.ServletEngineValve.invoke(ServletEngineValve.java:87) [bes-embed-core.jar:?]
        at com.bes.enterprise.webtier.connector.CoyoteAdapter.service(CoyoteAdapter.java:370) [bes-embed-core.jar:?]
        at com.bes.enterprise.web.crane.http11.Http11Processor.service(Http11Processor.java:803) [bes-embed-core.jar:?]
        at com.bes.enterprise.web.crane.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [bes-embed-core.jar:?]
        at com.bes.enterprise.web.crane.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:822) [bes-embed-core.jar:?]
        at com.bes.enterprise.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1486) [bes-embed-core.jar:?]
        at com.bes.enterprise.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [bes-embed-core.jar:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_281]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_281]
        at com.bes.enterprise.util.threads.WorkThread$WrappingRunnable.run(WorkThread.java:61) [bes-embed-core.jar:?]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_281]
        Suppressed: com.bes.enterprise.cluster.deployment.DeploymentException: Failure to deploy application ntkoSignServer on instance testIns, the error msg is: `GC overhead limit exceeded

Command deploy failed.
`!

错误主要原因:`GC overhead limit exceeded Command deploy failed.

再查看实例日志:cat /opt/BES9/testnode/instances/testIns/logs/server.log

 错误主要信息:

|##
##|2022-12-28 09:52:53.543|INFO|configuration|_ThreadID=6233;_ThreadName=bes-deployment-thread-12|Configuring enterprise application: /opt/BES9/testnode/instances/testIns/deployments/ntkoSignServer|##
##|2022-12-28 09:53:50.088|SEVERE|deployment|_ThreadID=6233;_ThreadName=bes-deployment-thread-12|GC overhead limit exceeded
com.bes.enterprise.appserv.deployment.exception.DeploymentException: GC overhead limit exceeded
        at com.bes.enterprise.appserv.deployment.AppDeployer.deployApp(AppDeployer.java:134)
        at com.bes.enterprise.appserv.deployment.AppDeployer.deployApp(AppDeployer.java:99)
        at com.bes.enterprise.appserv.deployment.handler.DeployApplicationHandler.deploy(DeployApplicationHandler.java:142)
        at com.bes.enterprise.appserv.deployment.handler.DeployApplicationHandler.doApplicationProcess(DeployApplicationHandler.java:105)
        at com.bes.enterprise.appserv.deployment.handler.AbstractApplicationHandler$1.call(AbstractApplicationHandler.java:69)
        at com.bes.enterprise.appserv.deployment.handler.AbstractApplicationHandler$1.call(AbstractApplicationHandler.java:66)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
        at com.bes.enterprise.appserv.deployment.handler.AbstractApplicationHandler$TerminableThread.run(AbstractApplicationHandler.java:177)
Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
|##
##|2022-12-28 10:55:14.693|INFO|configuration|_ThreadID=6247;_ThreadName=bes-deployment-thread-14|Configuring enterprise application: /opt/BES9/testnode/instances/testIns/deployments/ntkoSignServer|##
##|2022-12-28 11:01:00.215|SEVERE|deployment|_ThreadID=6247;_ThreadName=bes-deployment-thread-14|Java heap space
com.bes.enterprise.appserv.deployment.exception.DeploymentException: Java heap space
        at com.bes.enterprise.appserv.deployment.AppDeployer.deployApp(AppDeployer.java:134)
        at com.bes.enterprise.appserv.deployment.AppDeployer.deployApp(AppDeployer.java:99)
        at com.bes.enterprise.appserv.deployment.handler.DeployApplicationHandler.deploy(DeployApplicationHandler.java:142)
        at com.bes.enterprise.appserv.deployment.handler.DeployApplicationHandler.doApplicationProcess(DeployApplicationHandler.java:105)
        at com.bes.enterprise.appserv.deployment.handler.AbstractApplicationHandler$1.call(AbstractApplicationHandler.java:69)
        at com.bes.enterprise.appserv.deployment.handler.AbstractApplicationHandler$1.call(AbstractApplicationHandler.java:66)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
        at com.bes.enterprise.appserv.deployment.handler.AbstractApplicationHandler$TerminableThread.run(AbstractApplicationHandler.java:177)
Caused by: java.lang.OutOfMemoryError: Java heap space

Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
 

Caused by: java.lang.OutOfMemoryError: Java heap space
 

处理办法是修改实例的jvm内存大小:点击实例管理--实例名称--修改jvm配置的最大最小堆内存,通常改为8192M(当然这个数据的大小还要结合实际的内存大小)

JVM堆内存常用参数

参数

描述

-Xms    堆内存初始大小,单位m、g

-Xmx(MaxHeapSize)堆内存最大允许大小,一般不要大于物理内存的80%

-XX:PermSize  非堆内存初始大小,一般应用设置初始化200m,最大1024m就够了

-XX:MaxPermSize

参考资料:JVM堆内存(heap)详解_普通网友的博客-CSDN博客_jvm堆内存

这里我设置的2G,也就是2048M。 这里需要注意的是: 要根据实际的运行内存去设置这个堆最大值,而不是上述说的推荐是8192,假设内存本身就不大,那么设置大的堆最大值可能会出现其他的问题,比如说我就踩坑了,我的服务器只有4G的内存,然后设置的8G的堆最大值就很慢很慢,最后就直接timeout了。  需要根据实际情况定。后来我设置成2G就没会再报timeout 的错误了。

猜你喜欢

转载自blog.csdn.net/yeyuningzi/article/details/128483118