MC(Tomcat)のメモリ不足によってバックアップが失敗する場合の対処方法

フォローする

確認バージョン

11.3.0.3 10.7.0.4

 

概要

問題点

大量のファイルが登録されているMCのバックアップを取得しようとすると、メモリ不足によってバックアップの作成に失敗する

解決策

Tomcatのメモリのヒープ領域(Maximum memory pool)を拡張する

 

エラーメッセージ

Tomcatのstdout及びstderrにOutOfMemoryのエラーが残ります

<stdout>

YYYY-MM-DD hh:mm:ss Apache Commons Daemon procrun stdout initialized.
94965 [http-nio-8080-exec-8] ERROR com.kapowtech.mc.controllers.BaseAPIController - NestedServletException happened
org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.OutOfMemoryError: Java heap space
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1082) [spring-webmvc-5.3.20.jar:5.3.20]
(省略)
at java.lang.Thread.run(Thread.java:829) [?:?]
Caused by: java.lang.OutOfMemoryError: Java heap space
at com.mysql.cj.protocol.a.NativePacketPayload.readBytes(NativePacketPayload.java:574) ~[mysql-connector-java-8.0.30.jar:8.0.30]
(省略)

 

<stderr>

DD-Month-YYYY hh:mm:ss.fff SEVERE [http-nio-8080-exec-1] org.apache.coyote.AbstractProtocol$ConnectionHandler.process Failed to complete processing of a request
java.lang.OutOfMemoryError: Java heap space
(省略)

 

作業手順

作業前の準備

Tomcatを停止しておく

前提

MCがTomcat構築されている

 

①"Tomcat{バージョン}w.exe"を起動

Tomcatのインストールフォルダのbinファイルにある、"Tomcat{バージョン}w.exe"をダブルクリックで起動

※デフォルトはC:\Program Files\Apache Software Foundation\Tomcat {バージョン}\bin内

 

②Maximum memory poolを拡張

JavaタブのMaximum memory poolの値を拡張

 

③Tomcatを起動しバックアップが取得できるか確認

 

参考情報

手順書通りにTomcat構築を行っている場合、Tomcatのメモリは2048MBとなっており、450MBほどのリポジトリ容量(※)まで取得できることを確認しております。
その後、リポジトリ容量が倍になると、必要なメモリが2300MBほど増えることも確認しております。
リポジトリ容量=MCのフルバックアップファイルを展開した後のサイズとほぼ同等

弊社検証では以下の値を下回るとバックアップに失敗したため、拡張する際の指標としては以下の表の値以上のメモリを設定ください。

Tomcatのメモリ バックアップ取得可能なMCのリポジトリ容量
2048MB 約450MB
4096MB 約900MB
8192MB 約1700MB

※10.7以前のバージョンでは同じTomcatメモリで約2倍のリポジトリ容量のバックアップを取れることを確認しております。
例)Tomcatのメモリが2048MBの時、取得可能なリポジトリ容量は900MB

 

<補足>

端末のスペックや利用状況などによりTomcatのメモリが増やせない状況となった場合、以下の対応が必要となります。

・MCのリポジトリ容量の削減

・起動中の他アプリケーションの停止

・端末自体のメモリ増強

そのため、ご利用の端末に対してTomcatのメモリを最大値に設定した際には、定期的なリポジトリ容量の確認及び調整を検討ください。