2018-12-10この記事は約8分で読めます。構成オプションenvironmentでメモリ上限指定もう少し細かくまとめ参考サイトスポンサーリンクOOMとはOOMとはOutOfMemoryのことです。早い話がCircleCIを回す際に、メモリの利用上限をオーバーしましたってエラーです。要因については、公式も発表してます。あとこっちのSupportにも書かれてますね。こちらの記述を見ると、CircleCIで動くプロセス(DB、Test、ToolやFramework、JVM)を全部ひっくるめて4Gまでって感じ。自動テスト実行中に4G超えると落ちちゃうんですね。超えてしまうのであれば、増やすか絞るしか無いのです。2.0からはresource_classというオプションが使えます。大前提として、DockerExecuterの場合に限ります。こちらのSupportを見るとdefaultではmediumになっていて、vCPUsが2、RAMが4GBということなので、有料課金で最大vCPUsが8、RAMが16GBまで増やせます。こちらから申請制になっているためOOMが起きたからすぐ増築ということは出来ません。いうわけで、だいたいOOM発生の際の対策を調べると絞る対策が出てきます。増やすのは一般的な対策ではないって事です/(^o^)\environmentでメモリ上限指定というわけで、一般的なやり方の絞る方法です。こちらもDockerExecuterの場合に限ります。ここから先は体験談になりますので、OOMでテストが落ちたあとに調べた内容です❗ビルドはGradleを利用していたので、Gradleベースで話を進めます。優先順位表この表を見ると優先順位0と、_JAVA_OPTIONSがダントツTOPなのでこんな感じで絞ります。Asia/Tokyo絞ったところで再度テストを流してみました。https://docs.gradle.org/4.8.1/userguide/java_plugin.html#sec:test_executionあれ、落ちた・・・・・というわけで、ここをもう一回よく見直す。Oracle-specificそもそもOracle様専用だった/(^o^)\今回使用しているイメージはCircleCI提供のOpenJDKなのでそれで落ちたのかも。Asia/Tokyoこれで結果落ちなくなりました!!他にもbuild.gradleに直でメモリ上限を書く方法とかあるみたいですが、CircleCIのことはCircleCIの設定で片付けたいのでこの設定を採用です。-Xm3Gとしましたが、実際はもう少し細かく設定します。Japanの方からお返事を頂いてました。Asia/Tokyo一応、メモリは2048まで落としました。Gradleの特性で起動時にヒープで1G持っていくのと、テストTaskはそれとは別のJVMを起動させるという話も聞いたので・・・wただ、GRADLE_OPTSの制限でヒープ+テスト時のJVMも含めて全体のメモリ制限の可能性もあります。それであれば-Xmx3072まで上げてもよいかと追記:今日”Xmx3072m“で死んだので、おとなしくXmx2048mが安泰ですね。-Dorg.gradle.daemon=falseまとめOOMは結構よく起こる現象みたいなので、調べれば日本語の対処法は結構出てきます。利用するJVM環境やビルド環境で多少対応策が変動するので公式の表の元に対策するのが一番です。Adve...技術ネタAngularでStripeのテストでハマったことこんばんわ、hisayukiです。ここ最近フロントまわりの作業が多く、これを期に負債の返済をしようと思いました。コメントをキャンセルメールアドレスが公開されることはありません。