序文
サーバーの応答速度を向上させ、アプリケーションのメモリ不足エラーを防ぐ最も簡単な方法の1つは、スワップスペースを追加することです。このガイドでは、スワップファイルをUbuntu16.04サーバーに追加する方法について説明します。
ただし、次の点に注意してください。
従来の回転ハードドライブを使用するシステムには一般にスワップ領域が推奨されますが、SSDでスワップを使用すると、時間の経過とともにハードウェアの劣化の問題が発生する可能性があります。この考慮事項のため、DigitalOceanまたはSSDストレージを使用する他のベンダーでスワップパーティショニングを有効にすることはお勧めしません。そうすることはあなたとあなたの隣人の基礎となるハードウェアの信頼性に影響を与えるかもしれません。このガイドは、他の場所で回転ディスクシステムを使用する可能性のあるユーザーのみが参照できます。 DigitalOceanサーバーのパフォーマンスを向上させる必要がある場合は、Dropletをアップグレードして、エクスペリエンスを向上させ、ハードウェアの問題がサービスに影響を与える可能性を減らすことをお勧めします。
1. まず、スワップとは何かを理解しましょう
スワップパーティション(スワップパーティションとも呼ばれます)は、オペレーティングシステムが一時的にデータを保存できる場所として指定されたハードディスク上の領域であり、これらのデータはRAMに保存できなくなります。基本的に、これにより、サーバーが作業中の「メモリ」に保持する情報の量を増やすことができますが、主に、使用されているアプリケーションデータを収容するのに十分なスペースがRAMにない場合、ハードドライブ上のデータが使用されるという注意点があります。スペースを交換します。
ディスクに書き込まれる情報は、RAMに保存される情報よりもはるかに低速ですが、オペレーティングシステムは、アプリケーションデータをメモリに保存し、それを使用して古いデータを交換することをいとわないでしょう。一般に、システムのRAMが使い果たされた場合、フォールバックスペースとしてスワップスペースを使用することは、非SSDストレージシステムのメモリ不足を防ぐための優れたセーフティネットになる可能性があります。
2. システム交換情報を確認する
開始する前に、システムにすでに空きスワップスペースがあるかどうか、複数のスワップファイルまたはスワップパーティションがあるかどうかを確認できますが、通常はそれで十分です。次のコマンドを使用して、システムにスワップパーティションがあるかどうかを確認できます。
$ sudo swapon --show
結果が表示されない、または表示されない場合は、現在システムに使用可能なスワップスペースがないことを意味します。無料のツールを使用して、現在使用可能なスワップパーティションがないことを確認することもできます。
$ free -h
出力結果:
total used free shared buff/cache available
Mem: 488M 36M 104M 652K 348M 426M
Swap: 0B 0B 0B
ここの「スワップ」行はすべて0であることがわかります。これは、システムでアクティブなスワップがないことを意味します。
3. ハードドライブパーティションの空き容量を確認してください
スワップ用のスペースを割り当てる最も一般的な方法は、特定のタスク専用の別のパーティションを使用することです。ただし、パーティションスキームを変更できるとは限りません。既存のパーティションに存在するスワップファイルを作成するだけで済みます。
開始する前に、次のコマンドを入力して、現在のディスク使用量を確認する必要があります。
$ df -h
出力結果:
Filesystem Size Used Avail Use% Mounted on
udev 238M 0 238M 0% /dev
tmpfs 49M 624K 49M 2% /run
/dev/vda1 20G 1.1G 18G 6% /
tmpfs 245M 0 245M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 245M 0 245M 0% /sys/fs/cgroup
tmpfs 49M 0 49M 0% /run/user/1001
この場合、/ devの下のデバイスがディスクです。この例では、十分なスペースがあります(1.1Gのみが使用されます)。もちろん、使用法は異なる場合があります。
スワップスペースの適切なサイズについては多くの意見がありますが、それはあなたの個人的な好みやアプリケーションの要件によって異なります。一般的に言えば、システムメモリの2倍または2倍の量に相当するものが出発点として適しています。もう1つの優れたエクスペリエンスは、RAMバックアップとして使用する場合、スワップパーティションのサイズが4GBを超えないようにすることです。
4. スワップファイルを作成する
使用可能なハードディスク容量がわかったので、ファイルシステムにスワップファイルを作成できます。ルート(/)ディレクトリにswapfileという名前のファイルを作成します。スワップファイルを作成する最良の方法は、fallocateコマンドを使用することです。このコマンドは、事前に割り当てられたサイズのファイルをすぐに作成します。この例のサーバーRAMサイズは512MBであるため、このチュートリアルでは1 GBのファイルを作成し、独自のサーバーのニーズに合わせて適切に調整します。
$ sudo fallocate -l 1G /swapfile
作成が完了したら、次のコマンドを使用して、正しいスワップスペースが予約されているかどうかを確認できます。
$ ls -lh /swapfile
結果を表示:
$ -rw-r--r--1 root root 1.0G Apr 2511:14/swapfile
これは、ファイルが正しいスペースサイズを作成したことを意味します。
5. スワップファイルを有効にする
これで1GBのファイルができたので、それをスワップスペースに変換する必要があります
まず、root権限を持つユーザーだけがファイルの内容を読み取れるように、ファイルの権限をロックする必要があります。これにより、通常のユーザーがファイルにアクセスできなくなり、重大なセキュリティリスクが回避されます。
ロックされたファイルのルート権限:
$ sudo chmod 600/swapfile
権限を確認します。
$ ls -lh /swapfile
結果を表示:
- rw-------1 root root 1.0G Apr 2511:14/swapfile
ご覧のとおり、rootユーザーのみが読み取り/書き込みフラグを有効にしています。
次に、次のコマンドを使用して、ファイルをスワップスペースとしてマークできます。
$ sudo mkswap /swapfile
結果を表示:
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=6e965805-2ab9-450f-aed6-577e74089dbf
ファイルにマークを付けたら、スワップファイルを有効にして、システムで使用を開始できます。
$ sudo swapon /swapfile
次のコマンドを使用して、スワップスペースが使用可能であることを確認できます。
$ sudo swapon --show
結果を表示:
NAME TYPE SIZE USED PRIO
/swapfile file 1024M 0B -1
現時点では、無料で設定を再度確認できます。
$ free -h
結果を表示:
total used free shared buff/cache available
Mem: 488M 37M 96M 652K 354M 425M
Swap: 1.0G 0B 1.0G
スワップパーティションが1.0Gのサイズで正常に作成され、オペレーティングシステムが必要に応じてそれを使用することがわかります。
6. スワップファイルを永続的に保持
最近の変更により、現在のセッションのスワップファイルが有効になりましたが、再起動してもサーバーはスワップ設定を自動的に保持しません。スワップファイルを/ etc / fstabファイルに追加することでこれを変更できます。
エラーを防ぐために/ etc / fstabファイルをバックアップします。
$ sudo cp /etc/fstab /etc/fstab.bak
スワップファイル情報を/ etc / fstabファイルの最後に追加します。
$ echo '/swapfile none swap sw 0 0'| sudo tee -a /etc/fstab
これにより、スワップファイルが保持されます。
7. 交換設定を調整する
交換を処理するとき、いくつかのオプションを構成できます。これらのオプションはシステムのパフォーマンスに影響します
7.1 スワップピネス属性を調整します
swappinessパラメーターは、システムがRAMからスワップスペースにデータをスワップする頻度を構成します。値は0〜100で、パーセンテージを表します。 swappiness値が0に近い場合、絶対に必要でない限り、カーネルはデータをディスクにスワップしません。スワップファイルとのやり取りはRAMとのやり取りよりも時間がかかり、パフォーマンスが大幅に低下する可能性があるため、スワップファイルとのやり取りは「高価」であることに注意してください。システムはスワップパーティションへの依存度が低く、通常はシステムを高速化します。 swappinessの値が100に近い場合、より多くのデータをスワップに入れて、より多くのRAMスペースを維持しようとします。アプリケーションまたは使用するサーバーのメモリプロファイルによっては、これが優れている場合があります。
現在のswappiness値を表示します。
$ cat /proc/sys/vm/swappiness
結果は次のことを示しています
60
デスクトップシステムの場合、60のswappiness設定は悪い値ではありませんが、サーバーの場合は、0に近い値に設定することをお勧めします。
sysctlコマンドを使用して、swappinessをさまざまな値に設定できます。たとえば、swappinessを10に設定できます。
$ sudo sysctl vm.swappiness=10
結果を表示:
vm.swappiness = 10
この設定は、次のシステムの再起動まで保持されます。再起動後に有効にする場合は、/ etc /sysctl.confファイルに次の行を追加します。
$ sudo nano /etc/sysctl.conf
ファイルの最後に追加します。
vm.swappiness=10
完了したら、ファイルを保存して閉じます。
7.2 キャッシュ圧力設定の調整
変更する可能性のあるもう1つの関連値は、vfs_cache_pressureです。この設定は、システムがinodeおよびdentry情報をキャッシュするために選択するデータの量を構成します。基本的に、これはファイルシステムに関するデータにアクセスするためのものであり、通常は非常に時間のかかるクエリと頻繁な要求であるため、これはシステムキャッシュを作成するのに適しています。また、procファイルシステムにクエリを実行することで現在の値を確認できます。 。
$ cat /proc/sys/vm/vfs_cache_pressure
出力結果:
100
この構成では、システムがキャッシュからinode情報をすばやく削除する可能性があります。 50などのより控えめな値を設定できます。
$ sudo sysctl vm.vfs_cache_pressure=50
結果を表示:
vm.vfs_cache_pressure = 50
swappinessと同様に、これは現在のセッションでのみ有効です。swappiness設定を使用するのと同じように、構成ファイルに追加することで変更できます。
$ sudo nano /etc/sysctl.conf
最後に追加:
vm.vfs_cache_pressure=50
完了したら、ファイルを保存して閉じます。
8. 総括する
このガイドの手順に従うと、ある程度の余裕ができます。そうしないと、メモリ不足の例外が発生します。スワップスペースは、OOM(メモリ不足)エラーが発生した場合、またはシステムを使用できない場合に、これらの一般的な問題を回避するのに非常に役立ちます。アプリケーション、最良の解決策は、アプリケーション構成を最適化するか、サーバーをアップグレードすることです。
翻訳元:Ubuntu16.04でスワップスペースを追加する方法
以上が本稿の内容ですので、皆様のご勉強に役立てていただければ幸いです。
Recommended Posts