# GitHub Actions のメモリ不足（exit code 137）を定額で解決

> exit code 137 は、ジョブがメモリを使い切って Linux に止められた印です。プライベートリポジトリの ubuntu-latest は 8 GB。Skipbox なら 16 GB のマシンが月 6,000 円、32 GB が月 23,000 円の定額で、実行時間は無制限です。

ビルドが `exit code 137` で落ち、だれかが再実行し、テストのワーカーを減らし、swap を足す。そのたびに CI は遅くなります。落とし続けているランナーのメモリは 8 GB で、GitHub の大きいランナーは分課金です。

Skipbox は、16 GB と 32 GB のマシンを月額固定・実行時間無制限で使える GitHub Actions ランナーです。`runs-on: skipbox` に 1行書き換えるだけで、月 6,000 円でビルドのメモリが `ubuntu-latest` の 2倍になります。`runs-on: skipbox-8x16` なら、コアも 2倍です。

- 16 GB が月 6,000 円、32 GB が月 23,000 円。何分動かしても同じ額です
- 同じメモリなら GitHub の大きいランナーの 2倍のコア。16 GB で 8 vCPU です
- GitHub の 16 GB のランナーを月 10,000分使うと 約 16,140 円。Skipbox の S なら 6,000 円

**GitHub Actions を月額固定・使い放題に** Skipbox は、アカウント専用のマシンで GitHub Actions のジョブを動かします。何分動かしても月 6,000 円。ジョブが終わっても Docker のレイヤーと依存パッケージのキャッシュが残るので、次のジョブはすぐ始まります。

4 vCPU のランナーを月 20,000分 使うと、GitHub 約 35,120 円 → Skipbox 6,000 円。毎月 約 29,120 円お得。

移行は `runs-on: skipbox` に 1行書き換えるだけです。

[7日間無料で試す](https://app.skipbox.dev/sign-in?ref=g-github-actions-out-of-memory-ja)

## exit code 137 は、メモリを使い切った印

137 は 128 + 9 です。プロセスがシグナル 9（SIGKILL）で止められたという意味で、このシグナルはプロセス側では受け止められません。だからエラーも出さずに終わります。GitHub ホストランナーで SIGKILL を送るのは、Linux の OOM killer です。ジョブのプロセスが合わせてマシンのメモリを使い切ると、1つを選んで止めます。

| ログに出るもの | 起きたこと |
|---|---|
| `Process completed with exit code 137.`（直前に `Killed`） | カーネルがメモリを空けるためにプロセスを止めた |
| `JavaScript heap out of memory` | Node が自分のヒープの上限に達した。マシンのメモリはまだある |
| `The runner has received a shutdown signal.` | ランナー全体のメモリがなくなり、応答しなくなった |

プライベートリポジトリの `ubuntu-latest` のメモリは 8 GB です。ランナーのアプリ、Docker、サービスのコンテナーも、ここから使います。モノレポのビルド、ワーカーを増やした Gradle、Rust のリリースビルド、ブラウザーを何枚も開く Playwright は、ふだんの日でもこれを超えることがあります。

## 8 GB のままにするコスト

回避策は、どれもメモリの代わりに速さを差し出します。テストのワーカーを減らす、`CARGO_BUILD_JOBS=1` にする、`-Xmx` を下げる、swap を足す。収まるようにする代わりにビルドが遅くなり、チームは push のたびにその遅いビルドを待ちます。コードが増えれば、137 はまた戻ってきます。

GitHub で直すなら大きいランナーですが、分課金で、使えるのは GitHub Team と Enterprise Cloud の組織だけです。同じメモリで比べると、こうなります。

| 月の実行時間 | GitHub 4コア 16 GB | Skipbox S 16 GB | GitHub 8コア 32 GB | Skipbox L 32 GB |
|---|---|---|---|---|
| 10,000分 | 約 16,140 円 | 6,000 円 | 約 31,960 円 | 23,000 円 |
| 20,000分 | 約 35,120 円 | 6,000 円 | 約 66,770 円 | 23,000 円 |
| 30,000分 | 約 54,110 円 | 6,000 円 | 約 101,580 円 | 23,000 円 |

GitHub の額は、GitHub Team に含まれる無料分を引いたあとの請求です。自分のチームの分数は、[トップページの料金計算](https://skipbox.dev/?lang=ja&ref=g-github-actions-out-of-memory-ja#cost)で出せます。

使うメモリは、これからも増えます。コーディングエージェントはコードと依存パッケージを人より速く増やし、テストは大きくなり、ツールの更新ひとつで同じコミットのメモリが倍になることもあります。そこに、大きいランナーの分課金が push のたびに乗ります。

## 自分で直そうとすると

8 GB のまま通すには、こういう作業が要ります。

- `if: failure()` のステップで `dmesg` を読み、止められたプロセスを特定する
- そのツールの上限を調整する（`--max-old-space-size`、`-Xmx`、`org.gradle.workers.max`、`--maxWorkers`）
- `compose.yaml` でサービスのコンテナーごとにメモリの上限をつける
- 重いステップの前に swapfile を作る。ディスクは 14 GB しかない
- ジョブを分けて、1つのステップが全部を使わないようにする

どれもビルドを遅くするか壊れやすくするもので、コードが育てばまたやり直しです。大きなマシンにすれば、この作業はなくなります。

## Skipbox でジョブに渡せるもの

### 定額のメモリ

ジョブは、ラベルでマシンの大きさを選びます。

| ラベル | マシン | プラン |
|---|---|---|
| `skipbox` | 4 vCPU・メモリ 16 GB | S（月 6,000 円） |
| `skipbox-8x16` | 8 vCPU・メモリ 16 GB | M（月 12,000 円）か L |
| `skipbox-16x32` | 16 vCPU・メモリ 32 GB | L（月 23,000 円） |

実行時間は無制限です。減らしたワーカーを元に戻せば、ビルドはメモリとコアの両方を使えます。

### ビルドがさらに速くなる

アカウント専用のマシンがジョブのあとも残るので、Docker のレイヤー、パッケージのキャッシュ、ツールが、次のジョブの前からディスクにあります。

### 予算で止まらない、管理も要らない

Skipbox のジョブは GitHub の分数を使わないので、GitHub の予算で止まりません。マシンの用意、イメージの更新、ジョブごとの後片付け、ヘルスチェックと自動復旧は Skipbox が行います。

## 移行は runs-on を 1行書き換えるだけ

```yaml
jobs:
  build:
    runs-on: skipbox # ubuntu-latest から書き換える
    steps:
      - uses: actions/checkout@v4
      - run: npm ci && npm run build
```

1. Skipbox に GitHub でログインする
2. Skipbox の GitHub アプリを入れて、使うリポジトリを選ぶ
3. `runs-on` を書き換えて push する。プラン S（月 6,000 円）は 16 GB、32 GB が要るなら L を選ぶ

マシンは Ubuntu 24.04 で、パスワードなしの `sudo`、Docker、Node.js、Python が入っています。ステップはそのまま動きます。

## セキュリティ

- マシンはアカウントごとの専用です。ほかの会社のジョブと同じマシンで動くことはありません。
- ジョブが終わるたびに、ランナーの認証情報、プロセスとコンテナをすべて消します。2026年11月13日からは、チェックアウトしたコードと Cargo のビルド結果（`target/`）を専用のマシンに残し、次のジョブで使います。「毎回クリーン」なら、ジョブごとに新しいマシンで動きます。
- 書き込み権限のない人のコード（フォークからのプルリクエストなど）は、使い捨ての新しいマシンで動きます。

くわしくは[ジョブの分離のしくみ](https://docs.skipbox.dev/ja/isolation)にあります。

## まず移してみる

カード不要で、7日間かジョブの合計 3,000分まで無料です。トライアルのマシンは 4 vCPU・16 GB で、メモリはプライベートリポジトリの `ubuntu-latest` の 2倍です。137 で落ちるジョブを移して、そのまま動かしてみてください。同じメモリでコアを増やすならプラン M の `skipbox-8x16`、さらにメモリが要るならプラン L の `skipbox-16x32`（32 GB）です。

## よくある質問

### GitHub Actions の exit code 137 とは？

プロセスがシグナル 9（SIGKILL）で止められた、という意味です（128 + 9 = 137）。GitHub ホストランナーでは、ジョブがランナーのメモリを使い切り、Linux の OOM killer が止めたときがほとんどです。確実に直すには、メモリの多いマシンで動かします。Skipbox なら 16 GB と 32 GB のマシンを月額固定で使えます。

### GitHub Actions のランナーのメモリは何 GB？

プライベートリポジトリの ubuntu-latest は 2 CPU・メモリ 8 GB です。GitHub の大きいランナーは 4コアで 16 GB、8コアで 32 GB ですが、分課金で、使えるのは GitHub Team と Enterprise Cloud の組織だけです。Skipbox はプラン S（月 6,000 円）で 16 GB、プラン L で 32 GB、実行時間は無制限です。

### JavaScript heap out of memory のエラーと exit code 137 は同じ？

違います。heap out of memory は Node が自分のヒープの上限で止まったもので、--max-old-space-size で上げられます。137 はマシン全体のメモリがなくなってカーネルが止めたもので、ヒープの上限を上げるとかえって悪くなります。ビルドに本当にメモリが要るなら、runs-on: skipbox で 16 GB のマシンに移します。

### GitHub Actions のメモリを増やすには？

ubuntu-latest のメモリは変えられないので、ランナーを替えます。Skipbox なら runs-on を skipbox に書き換えるだけで 16 GB、skipbox-16x32 なら 32 GB です。サーバーを自分で用意する必要はありません。

### Skipbox の無料トライアルでメモリ不足は直る？

メモリは 2倍になります。トライアルで動くのは runs-on: skipbox の 4 vCPU・16 GB で、プライベートリポジトリの ubuntu-latest（8 GB）の 2倍、GitHub の 4コアのより大きなランナーと同じです。それでも足りないジョブは、プラン L を選んでラベルを skipbox-16x32（32 GB）に書き換えてください。

2026-11-11 更新 · https://skipbox.dev/ja/guides/github-actions-out-of-memory
