1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Mac が重いと思ったら、止め忘れた supabase start のコンテナが Docker を起動するたびに蘇っていた → restart policy を見て supabase stop する

1
Posted at

Mac が急に重くなりました。ウィンドウの切り替えが引っかかり、ファンが回りっぱなしです。見てみると load average が 500 を超え、スワップを 14GB 使っていて、空きメモリはほとんど残っていませんでした。

アプリを閉じても軽くならないので、何が動いているかを順に見ていきました。

uptime                     # load average
sysctl vm.swapusage        # スワップの使用量
docker ps --format '{{.Names}}\t{{.Status}}'
lsof -nP -iTCP -sTCP:LISTEN  # 待ち受けているポートと、そのプロセス

起きていたこと

docker ps に、Supabase のローカル環境が2組・約20コンテナ並んでいました。どちらも何日も前に、生成AI(Claude Code)に作業させたときに supabase start で立ち上げ、そのまま止めていなかったものです。Docker Desktop の仮想マシンだけで約13GB(圧縮分を含む)、CPU も 75〜88% を使っていました。

不思議だったのは、Docker Desktop の「ログイン時に起動」は切ってあったことです。それでも、その日に別の作業で Docker を起動した時点で、2組とも動き出していました。

原因:restart policy が unless-stopped

コンテナごとの再起動の設定を見ると、こうなっていました。

docker inspect -f '{{.Name}} {{.HostConfig.RestartPolicy.Name}}' $(docker ps -q)
# /supabase_db_my-project unless-stopped
# /supabase_kong_my-project unless-stopped
# ...

unless-stopped は「自分で止めない限り、Docker が起動するたびに立ち上げ直す」という設定です。supabase stop をせずに作業を終えると、コンテナは「止められていない」扱いのまま残ります。次に誰かが Docker を起動すると、使っていない Supabase が全部よみがえります。

直し方

そのプロジェクトのフォルダで止めます。

cd my-project
supabase stop

フォルダが分からないときは、名前で絞って止めます。

docker ps --filter name=supabase_ --format '{{.Names}}'
docker stop $(docker ps -q --filter name=supabase_)

docker stop で止めたコンテナは、unless-stopped でも次の Docker 起動では立ち上がりません。

ほかに、使っていない開発サーバー(next dev)や python -m http.server も残っていたので、lsof で接続が無いことを確かめてから止めました。http.server は既定ですべてのネットワークに向けて待ち受けるので、止め忘れは重さ以外の意味でもよくありません。

止めたあと、load average は 500 台から 30 前後まで下がり、空きメモリは 35% から 62% になりました。

止め忘れを減らす

  • supabase start・docker compose up・開発サーバーを立ち上げたら、作業の最後に止めるところまでを手順に入れる
  • 生成AIに作業させるときも同じ。AIが立ち上げたものは、AIが終わりに止めるように指示しておく
  • データベースだけ使えればよいなら、Docker を使わずに Homebrew の PostgreSQL を入れる手もある(自分はこちらに移した)

まとめ

  • Mac が重いときは uptime・sysctl vm.swapusage・docker ps・lsof -iTCP -sTCP:LISTEN を順に見る
  • Supabase のローカルのコンテナは restart policy が unless-stopped。止めずに終えると、Docker を起動するたびに蘇る
  • supabase stop(または docker stop)で明示的に止める

Mac が重くなったときに見る順番とコマンドをまとめたもの(有料・100円):https://note.com/kaito_cometa/n/nd9dff0c9fe42

生成AI(Claude Code)に書かせて一人で会社を回している記録を note に書いています。
https://note.com/kaito_cometa

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?