確認バージョン
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のメモリを最大値に設定した際には、定期的なリポジトリ容量の確認及び調整を検討ください。