Baolande BES アプリケーション サーバーのデプロイメント アプリケーション ログに「GC オーバーヘッド制限を超えました コマンド デプロイに失敗しました。java.lang.OutOfMemoryErro」というエラーが報告された場合の対処方法

BES アプリケーション サーバーにアプリケーションをデプロイするときに、アプリケーションが正常にデプロイされず、インストール ディレクトリ内のサーバー ログと、対応するインスタンスのログの内容を確認すると、次のことがわかります。

サーバーの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 オーバーヘッド制限を超えました。コマンドのデプロイに失敗しました。

インスタンス ログを再度確認します: 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

原因: java.lang.OutOfMemoryError: GC オーバーヘッド制限を超えました
 

原因: java.lang.OutOfMemoryError: Java ヒープ スペース
 

解決策は、インスタンスの jvm メモリ サイズを変更することです。[インスタンス管理]、[インスタンス名] の順にクリックし、jvm によって設定された最大および最小のヒープ メモリを変更します (通常は 8192M にします) (もちろん、このデータのサイズは、実際のメモリサイズ)

JVMヒープメモリの共通パラメータ

パラメータ

説明

-Xms ヒープ メモリの初期サイズ、単位 m、g

-Xmx (MaxHeapSize) ヒープ メモリの最大許容サイズ。通常は物理メモリの 80% を超えません。

-XX:PermSize 非ヒープ メモリの初期サイズ。一般的なアプリケーション設定は 200m に初期化され、最大 1024m で十分です

-XX:MaxPermSize

参考資料:JVMヒープメモリ(ヒープ)詳細解説_普通のネット民のブログ-CSDNブログ_jvmヒープメモリ

ここでは 2G、つまり 2048M を設定します。ここで注意する必要があるのは、ヒープの最大値は、上記の推奨値である 8192 ではなく、実際に実行されているメモリに応じて設定する必要があることです。メモリ自体が大きくないと仮定すると、ヒープの最大値を大きく設定する必要があります。ヒープは他の問題を引き起こす可能性があります。たとえば、ピットを踏んでいる、サーバーのメモリが 4G しかない、最大ヒープ値を 8G に設定しても非常に遅く、最終的には直接タイムアウトになるなどの問題が発生する可能性があります。実際の状況に応じて決定する必要があります。その後、2Gに設定すると、タイムアウトのエラーは再度報告されなくなります。

おすすめ

転載: blog.csdn.net/yeyuningzi/article/details/128483118