宝兰德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 的错误了。

### 兰德 BES WebServer 配置与使用 #### 一、环境准备 为了成功配置兰德BES WebServer,需先确认操作系统已满足最低需求并安装必要的依赖软件。通常情况下,这包括但不限于Java运行环境(JRE或JDK),其版本应兼容所使用的BES中间件版本[^1]。 #### 二、下载与解压 访问官方渠道获取最新版的BES WebServer压缩包文件,并将其放置于目标服务器上的合适位置。通过命令行工具执行解压缩操作,创建WebServer的工作目录结构。 ```bash tar -zxvf bes-webserver.tar.gz -C /opt/bes/ ``` #### 三、初始化设置 进入解压后的`bin`目录下找到启动脚本,在首次运行前可能需要修改部分参数来适应具体的应用场景。对于某些特定功能模块的支持,则要确保对应的库已被正确加载到CLASSPATH环境中。 ```bash cd /opt/bes/bin ./bes.sh config ``` #### 四、服务管理 利用提供的控制台程序可以方便地完成对WebServer实例的操作,比如开启/关闭服务进程或是调整监听端口等基本属性。这里展示了一个简单的例子用于说明如何以管理员身份启动指定名称的服务: ```bash iastool --user admin --password B#2008_2108#es start --server mywebserver[^2] ``` 请注意实际应用中的用户名密码应当妥善保管,避免泄露风险;同时建议定期更改账户凭证提高安全性。 #### 五、高级特性定制化 针对更复杂的需求,如集群部署或多租户模式下的资源共享机制,可以通过编辑XML格式的配置文档实现更加精细粒度的调控。这些文件一般位于`conf`子目录内,遵循一定的语法规范编写即可生效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值