Open5
PHPUnitのメモリ使用量が増加し続けてフリーズする

困った
時系列で
- GitHub Actions がタイムアウトしていた。(jobに
timeout-minutes: 30
を入れていたので30分(正確には34分)でタイムアウトした) - ログを見るとPHPUnitの実行が止まっている。
- 手元のPCで同じコマンドを実行するとテストは成功する。
- 「なるべくGitHub Actionsの環境と合わせてみよう」とDocker Composeで
cpu: 2, memory: 7gb
でコンテナ立てて実行すると再現(今ここ)
メモリが落ちているところはコマンド実行をkillしたところ。

--process-isolation をつけてみる
どこかでメモリリークしてそうな気がするのでひとまず--process-isolation
をつけて成功するか試してみる。
Serialization of 'Illuminate\Http\Testing\File' is not allowed
で失敗。
リソース制限しているコンテナ上ではなく、いつもの環境で--process-isolation
をつけて実行してみる。
同じエラー😢
@dataProvider
でシリアライズできないオブジェクトを返してるから出てる。テストコードを修正して再実行。
成功。リソース制限しているコンテナ上でも成功。

メモリリークの調査
TestCase.php
にメモリ使用量をログ出力するように仕込んでみる。
public function tearDown(): void
{
Log::debug(memory_get_usage() / 1024 / 1024 . 'MB');
parent::tearDown();
}
徐々にメモリが増えている様子は見えるが、90~150MBでGB単位ではない。

XDebugを無効にしてみる
メモリリークなくなった😢

pcovにした
フリーズしなくなった。やったね