WindowsでLaravel Sailを使うとメモリ不足でかたまってしまう原因を解説

Laravel Sailで環境構築!

WindowsにLaravel Sailの開発環境を作ると、Windows全体が固まったりすることがあります。これはLaravel Sailのせいというより、「WSL2のせい」だと考えられます。

このあたり、少し深堀していきますね。

Laravel Sailでトラブルになっている方の参考になればと思います。

なお、今回の現象が起こったのはWindows10環境です。

Junko
Junko

わたし自身、Laravel Sailを使おうとしましたが、マシンによってはうまくいかず悩んで調べました。

WindowsでLaravel Sailを使ったら画面が固まる現象

Laravel Sailは、Dockerを使った開発環境です。

Windows環境でDockerを使うには、先にWSL2を入れておきます。

WSL2は、Windows Subsystem for Linux の略です。これによって、仮想マシンを使い、Linux環境を実現できます。

この部分の手順は別の記事にまとめています。

このような形でWSL2とDockerをいれてLaravel Sail環境を構築すると、フリーズしてしまったりする場合があります。

最初のうちは問題ないものの、途中からトラブルが頻発したりします。

同じ状況になったときには、タスクマネージャー/プロセス をチェックしてみてください。パフォーマンスを見てみると【vmmem】という項目がすごい容量を取っている可能性があります。vmmemは、WSL2のプロセスとなります。

上記は問題ない時のプロセスをキャプチャしたものですが、すでに4GBもメモリが取られています。なお、メモリだけではなくCPUの処理負荷もすごいことになったりする場合もあります。

WindowsでLaravel Sailを使ったら画面が固まる原因

なぜこのようなことになってしまうのか。

どうやら、WSL2がLinuxを基準にメモリサイズをどんどん増やし、Linuxはどんどんキャッシュを増やすという悪循環が発生するようです*。

*参考:WSL2によるホストのメモリ枯渇を防ぐための暫定対処

少し昔のものになりますが、WSL2のスレッドでも、この件で物議を醸しだしていました。スレッド名は次のとおりです。

「WSL 2 consumes massive amounts of RAM and doesn’t return it
(WSL 2は大量のRAMを消費して、それを返さない)」

WindowsでLaravel Sailを使ったら画面が固まるときの対策?

ではどうしたらよいのか??

とりあえずWSL2を再起動すると、しばらくは改善するかと思います。

ですがまた発生した場合には、どうしたら良いのか。

サイト上でよく見かける回答は、「メモリに制限を加えればよい」というものです。WSL2が暴走しないように、あらかじめ制限を加えてしまえばよいわけです。

先程も言及した参考記事に、この部分の解説もあります。

ただLaravel Sail環境でこれを行うと、途中で止まってしまったりと開発に支障がでることがあります。

制限をかけたことでWindows自体は無事に稼働しますが、開発中のプロジェクトには、問題が出てきてしまう可能性があるのです。

他の解決方法としては、試していませんが、WSL2を使わずVirtual Boxを使ってDockerを入れる手もあります。

さいごに

ということで、もやもやっとした感じで終わりますが^^;

なんとなく原因が分かってスッキリはした、と思っていただけたら嬉しいです。

なおわたしは現在、Laravel Sailは実際の開発には使っていません。Xampp(ザンプ)をメインに使って、開発を進めています。

こちらについては、下記で分かりやすく解説してます。ご興味あれば併せてご覧ください。

Linux環境を使いたい場合は、以前から使っているHomesteadを使用したりします。Homesteadは、Virtual Boxを使うので、今回のような問題は起こりません。

Homesteadの解説記事は、下記のとおり。

併せて参考にしてください。

Junko
Junko

結局のところ、現時点ではWindows環境ならXAMPP(ザンプ)が一番使いやすいと思います。

Laravel Sailで環境構築!

【Laravelの教科書・プレゼント】

Junko
Laravelの使い方を覚えたい!と思ったら、ぜひ、役立ててほしいです。 基礎編は無料でプレゼント中です♪
ひつじプログラマ
会員制サイトをいちから作っていくよ。ボタンをクリックして詳細を見てね。
Laravelの教科書の詳細を見る

Laravel8版と、最新のLaravel9版、ふたつのテキストご用意してます♪

【無料プレゼント】

「LaravelでWebアプリをいちから作れるようになりたい!」

そんなLaravel初心者のあなたへ【Laravelの教科書】基礎編プレゼント中! 会員制フォーラムサイトを学習しながら作れます。

詳細はこちらをクリック

Laravel8版と、最新のLaravel9版、ふたつのテキストご用意してます♪

社内にWebアプリ開発経験がなくて、困ってませんか?

「自社でWebアプリ開発を始めていきたい」
という企業様のために、Laravelセミナー・プログラミング教育を実施しています。

【セミナー使用スライド】

詳細はこちらご覧ください

Twitter始めました。
40代からプログラミング!

コメント

タイトルとURLをコピーしました