gosho-techplayのblog

自作サイトを制作した際の実装方法などを備忘録としてまとめています。

rails s(server)が起動失敗したときの備忘

rails sでサーバーを起動させようとしたところ、エラーで立ち上がりませんでした。

=> Booting Puma
=> Rails 6.0.4.4 application starting in development 
=> Run `rails server --help` for more startup options
A server is already running. Check /XXXXXXXXXX/tmp/pids/server.pid.
Exiting

「すでにサーバーが立ち上がっている」というメッセージです。

エラーの原因 サーバーが立ち上がっているかどうかの判断には、「プロセス」の有無を参考にしています。「プロセス」とは、PC内でメモリを消費して実行中のプログラムのことです。 通常ならサーバーを切断させたときにプロセスも消えるはずですが、何らかの理由で消えなかったんですね。

エラーの解決方法 プロセスが不正に残ってしまっているので、残ったプロセスを削除すればOKです。

エラーコードの中に、プロセスファイルの場所が記載されています。

A server is already running. Check /XXXXXXXXXX/tmp/pids/server.pid.

/XXXXXXXXXX/tmp/pids/server.pidの部分です。 これを削除すればOK。

$ rm /XXXXXXXXXX/tmp/pids/server.pid

上記解決後、pumaでもエラーが発生

Puma starting in single mode...
* Puma version: 5.6.5 (ruby 3.1.2-p20) ("Birdie's Version")
*  Min threads: 5
*  Max threads: 5
*  Environment: development
*          PID: 424707
Exiting
/home/shogo123198/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/puma-5.6.5/lib/puma/binder.rb:425:in `add_unix_listener': There is already a server bound to: /var/www/XXXXXXXXXX/tmp/sockets/puma.sock (RuntimeError)

こちらも上記同様でサーバーを切断させたときにプロセスも消えるはずですが、何らかの理由で消えなかったんですね。

エラーの解決方法 プロセスが不正に残ってしまっているので、残ったプロセスを削除すればOKです。

エラーコードの中に、プロセスファイルの場所が記載されています。

There is already a server bound to: /var/www/XXXXXXXXXX/tmp/sockets/puma.sock (RuntimeError)

/var/www/XXXXXXXXXX/tmp/sockets/puma.sock の部分です。 これを削除すればOK。

$ rm /var/www/XXXXXXXXXX/tmp/sockets/puma.sock

そのあと、rails sでサーバーを起動させてください。

rails s(server)が起動失敗したときの備忘

rails sでサーバーを起動させようとしたところ、エラーで立ち上がりませんでした。

=> Booting Puma
=> Rails 6.0.4.4 application starting in development 
=> Run `rails server --help` for more startup options
A server is already running. Check /XXXXXXXXXX/tmp/pids/server.pid.
Exiting

「すでにサーバーが立ち上がっている」というメッセージです。

エラーの原因 サーバーが立ち上がっているかどうかの判断には、「プロセス」の有無を参考にしています。「プロセス」とは、PC内でメモリを消費して実行中のプログラムのことです。 通常ならサーバーを切断させたときにプロセスも消えるはずですが、何らかの理由で消えなかったんですね。

エラーの解決方法 プロセスが不正に残ってしまっているので、残ったプロセスを削除すればOKです。

エラーコードの中に、プロセスファイルの場所が記載されています。

A server is already running. Check /XXXXXXXXXX/tmp/pids/server.pid.

/XXXXXXXXXX/tmp/pids/server.pidの部分です。 これを削除すればOK。

$ rm /XXXXXXXXXX/tmp/pids/server.pid

上記解決後、pumaでもエラーが発生

Puma starting in single mode...
* Puma version: 5.6.5 (ruby 3.1.2-p20) ("Birdie's Version")
*  Min threads: 5
*  Max threads: 5
*  Environment: development
*          PID: 424707
Exiting
/home/shogo123198/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/puma-5.6.5/lib/puma/binder.rb:425:in `add_unix_listener': There is already a server bound to: /var/www/XXXXXXXXXX/tmp/sockets/puma.sock (RuntimeError)

こちらも上記同様でサーバーを切断させたときにプロセスも消えるはずですが、何らかの理由で消えなかったんですね。

エラーの解決方法 プロセスが不正に残ってしまっているので、残ったプロセスを削除すればOKです。

エラーコードの中に、プロセスファイルの場所が記載されています。

There is already a server bound to: /var/www/XXXXXXXXXX/tmp/sockets/puma.sock (RuntimeError)

/var/www/XXXXXXXXXX/tmp/sockets/puma.sock の部分です。 これを削除すればOK。

$ rm /var/www/XXXXXXXXXX/tmp/sockets/puma.sock

そのあと、rails sでサーバーを起動させてください。

WindowsでWSL2のプロセス「Vmmem」のメモリ使用量を制限する

編集中

Dockerの開発環境で動作が重くなっていたので対策の備忘
Docker Desktopで使ってるWSL2のプロセス「Vmmem」のメモリ使用量を制限する
制限前は約4.5GBメモリを使用していた。

実施手順
隠しファイル(.wslconfig)を右記ディレクトリに配置「C:\Users\username.wslconfig」

[wsl2]
memory=1GB

cmdを起動しWSL2を再起動

> wsl --shutdown

すると、WSL2を再起動する旨のポップが表示されるので「Restart」ボタンをクリックします。

2023/2/21 追記 .wslconfigをwindowsで保存してシャットダウンし再度起動したときにdocker desktopが起動しない現象が発生
詳細原因までは確認してないが、このファイルを削除して再起動で解決
wsl起動時にこのファイルがあることの影響を下記サイトで確認する

learn.microsoft.com