課題
以下の構成でOracleにインスタンスを立てて、Nginxをインストールするためにyumのアップデートを実行したところ、メモリ負荷が急激に高まりサーバーに接続してもタイムアウトになる。
実行コマンド
sudo yum update -y
インスタンス構成
OS:Oracle Linux8
Shape:VM.Standard.E2.1.Micro
OCPU count:1
Network bandwidth (Gbps):0.48
Memory (GB):1
コンソール画面(アップデート実行直後)
対策
仮想マシン立ち上げ
- 仮想マシンの立ち上げ準備
SSHでサーバーに接続して作業を行なっていたが、頻繁にタイムアウトが発生して作業しづらいため、仮想マシンから操作を行う。
まずは、操作対象のコンソールを開き、サイドメニューのConsole connection
をクリックする
-
仮想マシン立ち上げ
Launch Cloud Shell connection
をクリックして仮想マシンを立ち上げ、以下のメッセージがコンソールに表示されたら、エンターキーを叩く。================================================= IMPORTANT: Use a console connection to troubleshoot a malfunctioning instance. For normal operations, you should connect to the instance using a Secure Shell (SSH) or Remote Desktop connection. For steps, see https://docs.cloud.oracle.com/iaas/Content/Compute/Tasks/accessinginstance.htm For more information about troubleshooting your instance using a console connection, see the documentation: https://docs.cloud.oracle.com/en-us/iaas/Content/Compute/References/serialconsole.htm#four =================================================
- サーバーへのログイン
ユーザー名とパスワードを入力して、ログインする。
スワップ容量追加
-
スワップ容量の確認
以下のコマンドを実行し、サーバーのスワップ容量を確認しておく。
今回立てたインスタンスは、デフォルトで1.9GBのスワップ容量が設定されていることが確認できた。free -h
実行結果
💡total used free shared buff/cache available Mem: 948Mi 201Mi 443Mi 1.0Mi 302Mi 600Mi Swap: 1.9Gi 178Mi 1.7Gi
以下の参考記事によると、OCIイメージの作成時期によってスワップ容量に違いがあり、スワップの設定が無いケースもあるようです
-
スワップファイル作成
上記のURLを参考にして、スワップ容量を4GBに設定していく。
まずは、以下のコマンドを実行し、2GBのスワップファイルを作成する。sudo fallocate -l 2.0G /swapfile2
-
スワップファイルの権限設定
現状このサーバーには、機密性の高いデータはないが、念の為以下のコマンドを実行し、スワップファイルに権限を設定する。sudo chmod 600 /swapfile2
-
スワップ領域の設定
以下のコマンドを実行し、作成したスワップファイルを初期化する。sudo mkswap /swapfile2
-
スワップファイルの有効化
以下のコマンドを実行し、作成したスワップファイルを有効化する。sudo swapon /swapfile2
-
マウント設定ファイルの変更
現状のままでは、サーバーを再起動するとスワップの設定が消えるため、以下のコマンドを実行して、マウントの設定ファイルを開く💡sudo vi /etc/fstab
マウントとは?
ファイルシステムのマウントとは、ファイルシステムをディレクトリ (マウントポイント) に接続し、システムで使用可能にすること
Oracleより引用
💡fstab(ファイルシステムテーブル)とは?
「/etc/fstab」ファイルは、マウントするファイルシステムの情報を記述するファイルです。OSを起動する際には、システムがデバイスをディレクトリにマウントしますが、その際、どのデバイスにどのディレクトリをマウントするか、の処理は、「/etc/fstab」ファイルの記述に従って進行します。
Linucより引用
-
スワップファイルの永続化
以下の行を/.swapfile
の下に追加し、保存する。/swapfile2 none swap sw 0 0 ---------- ---- ---- -- - - ① ② ③ ④ ⑤ ⑥
番号 説明 ① 今回、新規に作成したスワップファイルのパス ② マウントポイントを指定するが、スワップファイルはディレクトリにマウントしないため、none ③ ファイルシステムの種類を指定しており、今回の場合はスワップファイルのためswapを使用 ④ マウントオプションを指定しており、今回の場合はスワップファイルを有効化するためswを使用 ⑤ dumpプログラムによるバックアップを行うか指定しており、通常スワップファイルは対象外のため0を指定 ⑥ ファイルシステムのチェック順序を指定しており、通常スワップファイルはチェック対象外のため0を指定 -
スワップファイルの確認
再度以下のコマンドを実行し、スワップ容量が追加されているか確認する。
スワップ容量が約4GBとなっており、想定した通りのスワップ容量となった。free -h
実行結果
total used free shared buff/cache available Mem: 948Mi 361Mi 272Mi 6.0Mi 314Mi 431Mi Swap: 3.9Gi 0B 3.9Gi
結果
30~40分ほどかけて、yumのアップデートが完了した。
【アップデート対象】
audit-3.1.2-1.0.1.el8.x86_64
audit-libs-3.1.2-1.0.1.el8.x86_64
avahi-libs-0.7-27.el8_10.1.x86_64
bind-export-libs-32:9.11.36-16.el8_10.2.x86_64
bind-libs-32:9.11.36-16.el8_10.2.x86_64
bind-libs-lite-32:9.11.36-16.el8_10.2.x86_64
bind-license-32:9.11.36-16.el8_10.2.noarch
bind-utils-32:9.11.36-16.el8_10.2.x86_64
blktrace-1.2.0-11.el8_10.x86_64
bpftool-5.15.0-300.163.18.el8uek.x86_64
bubblewrap-0.4.0-2.el8_10.x86_64
ca-certificates-2024.2.69_v8.0.303-80.0.el8_10.noarch
chkconfig-1.19.2-1.0.2.el8.x86_64
chrony-4.5-1.0.2.el8.x86_64
clang-libs-17.0.6-1.0.1.module+el8.10.0+90411+e344f03e.x86_64
clang-resource-filesystem-17.0.6-1.0.1.module+el8.10.0+90411+e344f03e.noarch
cloud-init-23.4-7.0.1.el8_10.8.noarch
compiler-rt-17.0.6-1.module+el8.10.0+90411+e344f03e.x86_64
curl-7.61.1-34.el8_10.2.x86_64
emacs-filesystem-1:26.1-12.el8_10.noarch
expat-2.2.5-15.0.1.el8_10.x86_64
findutils-1:4.6.0-23.el8_10.x86_64
firewalld-0.9.11-9.0.1.el8_10.noarch
firewalld-filesystem-0.9.11-9.0.1.el8_10.noarch
glibc-2.28-251.0.2.el8_10.5.x86_64
glibc-common-2.28-251.0.2.el8_10.5.x86_64
glibc-devel-2.28-251.0.2.el8_10.5.x86_64
glibc-gconv-extra-2.28-251.0.2.el8_10.5.x86_64
glibc-headers-2.28-251.0.2.el8_10.5.x86_64
glibc-langpack-en-2.28-251.0.2.el8_10.5.x86_64
grubby-8.40-49.0.2.el8.x86_64
initscripts-10.00.18-1.0.2.el8.x86_64
iproute-6.8.0-2.el8_10.x86_64
iproute-tc-6.8.0-2.el8_10.x86_64
iwl100-firmware-999:39.31.5.1-999.34.el8.noarch
iwl1000-firmware-999:39.31.5.1-999.34.el8.noarch
iwl105-firmware-999:18.168.6.1-999.34.el8.noarch
iwl135-firmware-999:18.168.6.1-999.34.el8.noarch
iwl2000-firmware-999:18.168.6.1-999.34.el8.noarch
iwl2030-firmware-999:18.168.6.1-999.34.el8.noarch
iwl3160-firmware-999:25.30.13.0-999.34.el8.noarch
iwl5000-firmware-999:8.83.5.1_1-999.34.el8.noarch
iwl5150-firmware-999:8.24.2.2-999.34.el8.noarch
iwl6000-firmware-999:9.221.4.1-999.34.el8.noarch
iwl6000g2a-firmware-999:18.168.6.1-999.34.el8.noarch
iwl6050-firmware-999:41.28.5.1-999.34.el8.noarch
iwl7260-firmware-999:25.30.13.0-999.34.el8.noarch
iwlax2xx-firmware-999:20240715-999.34.el8.noarch
jose-10-2.el8_10.3.x86_64
kernel-headers-4.18.0-553.22.1.el8_10.x86_64
kernel-tools-4.18.0-553.22.1.el8_10.x86_64
kernel-tools-libs-4.18.0-553.22.1.el8_10.x86_64
kexec-tools-2.0.28-1.0.6.el8_10.x86_64
keyutils-1.5.10-9.0.1.el8.x86_64
keyutils-libs-1.5.10-9.0.1.el8.x86_64
keyutils-libs-devel-1.5.10-9.0.1.el8.x86_64
krb5-devel-1.18.2-29.0.1.el8_10.x86_64
krb5-libs-1.18.2-29.0.1.el8_10.x86_64
libX11-1.6.8-9.el8_10.x86_64
libX11-common-1.6.8-9.el8_10.noarch
libcurl-7.61.1-34.el8_10.2.x86_64
libdnf-0.63.0-20.0.1.el8_10.x86_64
libipa_hbac-2.9.4-4.0.1.el8_10.x86_64
libjose-10-2.el8_10.3.x86_64
libkadm5-1.18.2-29.0.1.el8_10.x86_64
libldb-2.8.0-1.el8_10.x86_64
libndp-1.7-7.el8_10.x86_64
libnfsidmap-1:2.3.3-59.0.2.el8.x86_64
libomp-17.0.6-1.module+el8.10.0+90411+e344f03e.x86_64
libomp-devel-17.0.6-1.module+el8.10.0+90411+e344f03e.x86_64
libsmbclient-4.19.4-5.0.1.el8_10.x86_64
libsss_autofs-2.9.4-4.0.1.el8_10.x86_64
libsss_certmap-2.9.4-4.0.1.el8_10.x86_64
libsss_idmap-2.9.4-4.0.1.el8_10.x86_64
libsss_nss_idmap-2.9.4-4.0.1.el8_10.x86_64
libsss_sudo-2.9.4-4.0.1.el8_10.x86_64
libuser-0.62-26.el8_10.x86_64
libwbclient-4.19.4-5.0.1.el8_10.x86_64
linux-firmware-999:20240715-999.34.git4c8fb21e.el8.noarch
linux-firmware-core-999:20240715-999.34.git4c8fb21e.el8.noarch
llvm-libs-17.0.6-3.0.1.module+el8.10.0+90411+e344f03e.x86_64
mdadm-4.2-14.0.4.el8_10.x86_64
nano-2.9.8-3.el8_10.x86_64
network-scripts-10.00.18-1.0.2.el8.x86_64
nfs-utils-1:2.3.3-59.0.2.el8.x86_64
nss-3.101.0-7.el8_8.x86_64
nss-softokn-3.101.0-7.el8_8.x86_64
nss-softokn-freebl-3.101.0-7.el8_8.x86_64
nss-sysinit-3.101.0-7.el8_8.x86_64
nss-util-3.101.0-7.el8_8.x86_64
oci-utils-0.14.0-6.el8.noarch
openssh-8.0p1-25.0.1.el8_10.x86_64
openssh-clients-8.0p1-25.0.1.el8_10.x86_64
openssh-server-8.0p1-25.0.1.el8_10.x86_64
pcp-5.3.7-22.0.1.el8_10.x86_64
pcp-conf-5.3.7-22.0.1.el8_10.x86_64
pcp-doc-5.3.7-22.0.1.el8_10.noarch
pcp-libs-5.3.7-22.0.1.el8_10.x86_64
pcp-pmda-dm-5.3.7-22.0.1.el8_10.x86_64
pcp-pmda-nfsclient-5.3.7-22.0.1.el8_10.x86_64
pcp-pmda-openmetrics-5.3.7-22.0.1.el8_10.x86_64
pcp-selinux-5.3.7-22.0.1.el8_10.x86_64
pcp-system-tools-5.3.7-22.0.1.el8_10.x86_64
pcp-zeroconf-5.3.7-22.0.1.el8_10.x86_64
perf-4.18.0-553.22.1.el8_10.x86_64
platform-python-3.6.8-67.0.1.el8_10.x86_64
platform-python-setuptools-39.2.0-8.el8_10.noarch
python3-audit-3.1.2-1.0.1.el8.x86_64
python3-bind-32:9.11.36-16.el8_10.2.noarch
python3-dnf-plugin-ulninfo-0.3-3.module+el8.10.0+90380+96a02ce9.noarch
python3-firewall-0.9.11-9.0.1.el8_10.noarch
python3-hawkey-0.63.0-20.0.1.el8_10.x86_64
python3-libdnf-0.63.0-20.0.1.el8_10.x86_64
python3-libs-3.6.8-67.0.1.el8_10.x86_64
python3-pcp-5.3.7-22.0.1.el8_10.x86_64
python3-perf-4.18.0-553.22.1.el8_10.x86_64
python3-setuptools-39.2.0-8.el8_10.noarch
python3-setuptools-wheel-39.2.0-8.el8_10.noarch
python3-sssdconfig-2.9.4-4.0.1.el8_10.noarch
python3-urllib3-1.24.2-8.el8_10.noarch
python36-oci-sdk-2.135.0-1.el8
メモ
- マウントやファイルシステムテーブルについての理解が浅いため、勉強する
参考
OCI Compute インスタンスに Nginx をインストールする - Qiita
How to Create an Always Free Website on the Oracle Cloud