Linuxサーバーのスワップファイルを作成する

:bulb: RAMが4GB以下のサーバーの場合、./discourse-setupを実行すると、2GBのスワップファイルを求められ、自動的に作成されます。

ほとんどのクラウド仮想マシンプロバイダーは、サーバープロビジョニングの一部としてスワップファイルを設定していません。

特に、Discourseのアップグレードは大きなメモリ負荷を発生させます。スワップファイルがあれば、メモリ不足エラーでプロセスがランダムに終了する代わりに、処理速度が低下します。スワップファイルは、ロード関連の他の多くの障害から保護するための安価な保険となります。

これは、サーバー上のコマンドラインからいつでも実行できます。

2GBのスワップファイルを設定する

サーバーのメモリが4GBを超えていない限り、Discourseには2GBのスワップファイルを推奨します。

ドロップレット用に開いたシェルで、次のようにします。

:warning: この操作の多くでroot権限が必要になるため、これらのコマンドを実行する前にrootになるかsudo -sを実行してください!その後、rootから抜けるのを忘れないでください。

  1. 空のスワップファイルを作成します

     install -o root -g root -m 0600 /dev/null /swapfile
    
  2. 'swapfile’という名前の2GBのファイルを割り当てます

     fallocate -l 2G /swapfile
    
  3. これがスワップファイルであることをLinuxに伝えます:

     mkswap /swapfile
    
  4. 有効化します

     swapon /swapfile
    
  5. 再起動後も存在するようにファイルシステムテーブルに追加します:

     echo "/swapfile       swap    swap    auto      0       0" | tee -a /etc/fstab
    
  6. スワップネスを10に設定し、緊急バッファとしてのみ使用するようにします

     sysctl -w vm.swappiness=10
     echo 'vm.swappiness = 10' > /etc/sysctl.d/30-discourse-swap.conf
    

コピー&ペースト可能な単一スクリプトとしての全体:

install -o root -g root -m 0600 /dev/null /swapfile
fallocate -l 2G /swapfile
mkswap /swapfile
swapon /swapfile
echo "/swapfile       swap    swap    auto      0       0" | tee -a /etc/fstab
sysctl -w vm.swappiness=10
echo 'vm.swappiness = 10' > /etc/sysctl.d/30-discourse-swap.conf
「いいね!」 96

デフォルトの2GBではなく4GBの大きなスワップファイルを設定しようとしていますが、上記のスクリプトを実行したときにこれが発生しました。

\u003e rm: `swapfile’ を削除できません: 操作が許可されていません

これを回避するために、まずこれを行う必要がありました。

  1. サーバーを再起動します(重いスワップファイルの使用により、swapoff が許可されなかったようです)。
  2. swapoff -a -v
「いいね!」 3

同様の理由で、2つのスワップファイルで実行しています。

# swapon
NAME                       TYPE  SIZE  USED PRIO
/var/local/swap/swapfile.0 file 1024M 44.9M   -3
/var/local/swap/swapfile.1 file 1024M 1024M   -2

2つ目のスワップファイルは、再起動を回避するための巧妙な方法になる可能性があります。2つ目のスワップファイルを作成し、有効にしてから、最初のファイルを削除します。

「いいね!」 4

そのため、インストール時にメモリが2GB未満の場合に自動的に行われるため、このガイドに従って2GBのswapファイルを作成する必要はないということですね?

はい。ただし、サーバー構成を変更した場合や、移行を実行した場合などは、ご自身で対応する必要があるかもしれません。(同時に、インストールでは対応しない重要なカーネル設定が2つあります。詳細はMKJ’s Opinionated Discourse Deployment Configurationを参照してください。)

10件の投稿が新しいトピックに分割されました: High rebuild memory requirements: April 2025 edition