Zennへの投稿記事

2026/07/08 追記

OCI無料枠がサイレント改定(上限2core/12GB)されました。
4core/24GBのインスタンスで、アイドル判定が厳しくなり強制削除された記事も出ています。
無料アカウントのみが対象という話もありどれが本当の情報かわかりません。

経緯

ネットやAIで調べていたら 無料アカウントは 1core / 6GB から始めろ! リージョンはカリフォルニアだ! Terraformで自動化しろ! と書いてありましたのでそのとおりに頑張っていました。
※記事に反してリージョンは東京にしましたが 笑

しかし待てど暮せどインスタンス登録に成功しません。

いい加減飽きてきたときに発見した記事で 有料プランにするとすんなりインスタンス登録できる と書いてありました。
有料プランに切り替えるのは高額請求が来たら怖いなと思い躊躇していたのですが、無料枠を超える設定をしなければ安全という情報を得ました。

記事作成時点での無料枠上限は ARM (Ampere A1) 4 OCPU / 24GB RAM / ストレージ 200GB です。
結果として有料アカウントにグレードアップしたら希望のインスタンスが作成できました。

記事には書いていないこと

OCIの無料枠はいいことだらけ、というわけではありません。

実は アイドル状態による自動停止・削除の条件 が存在します。

  • CPU利用率: 過去1週間で、95パーセンタイルの利用率が 20%未満
  • ネットワーク利用率: 20%未満
  • メモリ利用率: 20%未満 (※特にARMインスタンスで厳しくチェックされます)

個人開発や検証環境であればこの条件をクリアするのは難しいのではないでしょうか。
そこで先人たちはcronを使用してそれぞれの条件をクリアすることを思いついたのです。

# 1. まずEPELリポジトリを有効化する
sudo dnf install -y epel-release

# 2. stress-ng をインストールする
sudo dnf install -y stress-ng

#3. スクリプトを作成する
vi ~/keep_alive.sh
---
#!/bin/bash
# OCIのアイドル判定回避スクリプト (dnf環境用)
# 5分間(300秒)、CPU 2コアに30%の負荷、メモリ5GBを消費

# 実行ログの記録
echo "$(date): OCI Keep-Alive script started." >> ~/keep_alive.log

# 負荷実行
stress-ng --cpu 2 --cpu-load 30 --vm 1 --vm-bytes 5G --timeout 300s

echo "$(date): OCI Keep-Alive script finished." >> ~/keep_alive.log

#4. 実行権限を付与
chmod +x ~/keep_alive.sh

#5. cron設定
crontab -e
0 * * * * /bin/bash $HOME/keep_alive.sh > /dev/null 2>&1

これでOCIのチェックをパスできるらしいです。

あくまでも自己責任

こんなご時世なので声を大にして言いますが、実体験で書いた記事ではありますが、読み手のあなたが情報を精査し、実行し、責任を持ってください。

当記事に記載した内容で損害が出ても当方は一切責任を負いません。