1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Oracle Cloud(無料枠)が劇重なので改善

Posted at

課題

以下の構成で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

コンソール画面(アップデート実行直後)

image.png

対策

仮想マシン立ち上げ

  • 仮想マシンの立ち上げ準備
    SSHでサーバーに接続して作業を行なっていたが、頻繁にタイムアウトが発生して作業しづらいため、仮想マシンから操作を行う。
    まずは、操作対象のコンソールを開き、サイドメニューのConsole connectionをクリックする

image.png

  • 仮想マシン立ち上げ
    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
    =================================================
    

image.png

  • サーバーへのログイン
    ユーザー名とパスワードを入力して、ログインする。

image.png

スワップ容量追加

  • スワップ容量の確認
    以下のコマンドを実行し、サーバーのスワップ容量を確認しておく。
    今回立てたインスタンスは、デフォルトで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イメージの作成時期によってスワップ容量に違いがあり、スワップの設定が無いケースもあるようです

    Oracle CloudのFree Tier(メモリ1GB)でdnfが死ぬ件でswapサイズを調べた

  • スワップファイル作成
    上記の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

Oracle CloudのFree Tier(メモリ1GB)でdnfが死ぬ件でswapサイズを調べた

「/etc/fstab」ファイル - Linux技術者認定 LinuC | LPI-Japan

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?