WEB工房しずおかのロゴ

WEB工房しずおか

Ubuntuで動くLaravelサーバーを健全に保つ!余分なプロセスの調査とスワップ(Swap)安全解放の手順

Logs
Koshio

Ubuntu サーバー健全化

みなさん、こんにちは!WEB工房しずおかの開発チームです。

弊社では、Laravelを中心としたWebアプリケーションの開発だけでなく、各種クラウドサーバーやVPS環境でのインフラ構築・パフォーマンスチューニングも日々の業務として行っています。

Webシステムを長期稼働させていると、「サーバーのレスポンスが最近重くなってきた」「予期せぬプロセスがリソースを食いつぶしていないか不安」といった懸念が出てくることがあります。

今回は、Ubuntu環境でLaravelを動かしているサーバーを対象に、余分なプロセスの確認方法から、パフォーマンス悪化の原因となりやすいスワップ(Swap)の安全な解放手順までを分かりやすく解説します!


1. サーバー内で余分なプロセスが動いていないか確認する手順

サーバーのリソース状態や現在動いている処理を調べる際、最初に行うべきはプロセスの可視化です。

基本コマンドと確認ポイント

1. 全体像をリアルタイムで把握する(htop

htop
  • CPUやメモリ(RAM)、スワップの使用率が一目でわかります。
  • インストールされていない場合は sudo apt install htop で導入できます。
  • Tips: MySQLなどのマルチスレッド対応アプリは行が大量に表示されることがあります。htop 実行中に Shift + H を押すとスレッド表示が非表示になり、実際のプロセス単位に整理されて格段に見やすくなります。

2. Web・Laravel関連プロセスに絞って確認する(ps aux

ps aux | grep php   # PHP-FPMやartisanキューワーカーの確認
ps aux | grep nginx # Nginxの動作確認

3. 放置された不要プロセスの掃除 SSH接続を切断した際にバックグラウンドに残ってしまった ssh-agent -s などの不要プロセスが溜まっている場合は、以下のコマンドで一括終了できます。

killall ssh-agent

2. スワップ(Swap)領域の肥大化に注意!

プロセスの確認とあわせて必ずチェックしたいのが「スワップ(Swap)」の使用量です。

Linuxでは物理メモリ(RAM)が不足しそうになると、ディスク上の一部の領域をメモリ代わりに利用する「スワップ」が発生します。しかし、SSDやHDDへのアクセスは物理メモリに比べて非常に遅いため、スワップが溜まるとWebサイトの表示速度やAPIのレスポンス速度が著しく低下します。

スワップ状態の確認コマンド

free -h

実行結果の例:

               total        used        free      shared  buff/cache   available
Mem:           1.9Gi       996Mi       434Mi        38Mi       540Mi       772Mi
Swap:          2.0Gi       1.0Gi       977Mi

上記の例のように Swap used1.0Gi など大きな値になっている場合、過去にメモリ負荷が高まったタイミングがあり、古いデータがディスク上に追いやられたまま残っていることを示しています。


3. スワップ(Swap)領域を安全に解放・クリアする3ステップ

スワップをクリアするには sudo swapoff -a && sudo swapon -a というコマンドを使用しますが、利用可能な物理メモリ(Mem available)がスワップ使用量(Swap used)を下回った状態で実行すると、メモリ不足でシステムがフリーズする危険があります。

安全に実行するための手順は以下の通りです。

STEP 1:物理メモリの空き領域を確保する

スワップ領域内のデータを物理メモリに安全に戻せるよう、事前にキャッシュの解放や主要サービスの再起動を行って物理メモリを空けます。

# 1. ページキャッシュの解放
sudo sync; echo 3 | sudo tee /proc/sys/vm/drop_caches

# 2. メモリ消費の大きいサービスの再起動(メモリリセット)
sudo systemctl restart php-fpm
sudo systemctl restart mysql

STEP 2:空きメモリ(Mem available)の再確認

再度 free -h を実行します。

  • 安全ライン: Mem available の値が Swap used の値よりも十分に大きいことを確認します。

STEP 3:スワップの解放と再有効化

安全が確認できたら、以下のコマンドでスワップをクリアします。

sudo swapoff -a && sudo swapon -a

処理が完了したのち free -hSwap used0B になっていれば成功です!


4. 予防策:スワップの利用積極度(swappiness)を調整する

スワップの頻発を防ぐため、OSがスワップ領域を利用し始めるしきい値(swappiness)を小さく設定しておくのがおすすめです。

1. 現在の値を確認(デフォルトは60が多いです)

cat /proc/sys/vm/swappiness

2. 一時的に値を「10」に変更する

sudo sysctl vm.swappiness=10

3. 再起動後も設定を維持する(/etc/sysctl.conf への追記)

echo "vm.swappiness = 10" | sudo tee -a /etc/sysctl.conf

この設定を行うことで、物理メモリの限界近くまでスワップを使わないようOSに指示を出すことができます。


まとめ:定期的なヘルスチェックで快適なWeb環境を

今回は、UbuntuでLaravelシステムを動かしているサーバーのプロセス確認方法と、スワップ領域の安全なリセット手順について解説しました。

  • htopShift + H)で暴走プロセスやスレッドの状態を把握する
  • スワップ解放時は必ず Mem available > Swap used であることを確認する
  • swappiness を10に調整して事前予防する

サーバーのパフォーマンス低下は、思わぬユーザー体験(UX)の悪化につながります。定期的なチェックを行い、快適な運用を目指しましょう!

WEB工房しずおかでは、Laravelを使用したWebシステムの開発・改修から、VPSやクラウドサーバーの最適化・保守運用まで幅広くサポートを行っています。サーバーの重さにお悩みの場合やインフラの改善をご検討の際は、ぜひお気軽にご相談ください!