このサイトは、只今WEB業界で活躍中のデザイナー、プログラマーの方々の情報を集めたweb統合情報サイトです。

Archives Details

【Railway】MySQLサービスをコスト抑えて運用する

運用

2026.01.19

どもです。

年初よりRailwayを扱っており、大体できることできないことも把握してきた今日このごろです。

というより、最近は別のこともしてちょっと忘れがちだったのでRailwayについての備忘録程度で。

前回、「無料でウェブアプリケーションを運用できるか?」といったテーマで、あけましておめでとうございますmm DjangoアプリをRailwayに移行する。という記事書いたのですが、結構厳しいね。(笑)

初回無料分$5が毎月付与されれば大丈夫ですが、翌月から$1ということでそれは超えてしまう。

ですが、なんとか大体 $5〜$6にくらいに収まるくらいではないか。

この$5〜$6もウェブアプリケーション2個分の値段。

調子に乗って、RailsアプリケーションもRailwayに乗せたのでその内容はまた別途とし、

一つくらいであれば、$2〜$3で放置運用できるのはと思いました。

そもそもRailwayの値段構成ですが、RailwayのTopページにこのような記載があります。

項目 料金区分 単価  単位
メモリ (Memory) コンピューティング $0.00000386  GB / 秒
CPU コンピューティング $0.00000772 vCPU / 秒
ボリューム (Volumes) ストレージ $0.00000006 GB / 秒
オブジェクトストレージ ストレージ $0.015 GB / 月
データ転送 (Egress) ネットワーク $0.05 GB あたり

とあります。

Rails + MySQLのサービスを稼働させようとして、メモリの使用量が以下の通りだったとする。

サービス メモリ
Rails 約 140MB
MySQL 約 300MB

合計 440MB。つまりメモリを合計で0.44 GB使用。

Railwayの使用料金は、Memory: $0.00000386 / GB / sec 1GB を 1ヶ月使うと 約 $10 と考える。

月額コスト計算(24h × 30日)

■ メモリ料金

0.44 GB × $10 ≒ $4.40 / 月

サービス別内訳

Rails: 0.14 GB × $10 = $1.40 / 月

MySQL: 0.30 GB × $10 = $3.00 / 月

とざっくり計算でこうなる。

その他にもCPUやボリュームの使用量が加算されますが、放置運用だとCPUもボリュームもほぼ使わずこちらは$0に近いのですが、メモリだけはサービス稼働させるために常に使用する形になるので、コストが掛かってくるのはメモリ使用量と捉えて良い

したがって、コスト削減を試みるとなるとこのメモリ使用量を可能な限り落とせば良い。

ということもあって、色々とコスト削減の為、チューニングを頑張ってはいました。

ただやりすぎるとサービスに影響するので、あまり多くない人が閲覧できるくらいの形で運用できるか。

Railwayのコスト削減において、MySQLサービスが簡単に落とせるので、あまりフルで活用しないのであれば抵コスト運用に設定しておいたほうが良いかと思います。

というのも、MySQLサービスを作成時のデフォルト設定が結構メモリを喰う設定なので何もしないとただただお金を落としていきます。

MySQLサービスをボタンひとつで追加できる気軽の反面、デフォルトでは結構もったいない設定で追加されます。

追加したばかりで何もしないとメモリを360MBくらい使用した形となっています。

設定というのが、Custom Start Commandになります。

Custom Start Command

docker-entrypoint.sh mysqld --innodb-use-native-aio=0 --disable-log-bin --performance_schema=0 --innodb-buffer-pool-size=1G

ここを見てみると、一番大きいのが「–innodb-buffer-pool-size=1G」。1GB 固定確保しておりRailway の MySQL が 200MB超えてる原因ほぼこれとなります。

最優先で直すべき設定で、buffer pool を激減させていきます。

Railway / 小規模構成なら

--innodb-buffer-pool-size=128M

さらに攻めるなら

--innodb-buffer-pool-size=64M

API主体で、同時接続少であれば64Mでも普通に動きますね。

設定しメモリ使用を抑えていきます。

これだけでも下がっていきます。

更にチューニングをしていきたいのですが、一旦、デフォルトのCustom Start Commandを整理すると、

  • --innodb-use-native-aio=0
    → Linux の非同期I/Oを使わない
    → コンテナ環境での安定性優先(パフォーマンスは少し犠牲)

  • --disable-log-bin
    → バイナリログを完全に無効化
    → レプリケーション不要・ディスク&メモリ節約

  • --performance_schema=0
    → MySQL 内部の詳細メトリクス収集をOFF
    → メモリ削減(10〜30MB程度)

  • --innodb-buffer-pool-size=1G
    → InnoDB が 1GB 常駐メモリ確保
    → 高速だけど 小規模サービスでは完全に過剰

状態まとめ

🟥 速いが重い
🟥 Railway / 個人サービスには不向き
🟥 メモリ使用量 300MB超えの主犯

というので、軽量・実運用向けに最終的にチューニングしたCustom Start Commandはこちら。

docker-entrypoint.sh mysqld \
  --innodb-use-native-aio=0 \
  --disable-log-bin \
  --performance_schema=0 \
  --innodb-buffer-pool-size=64M \
  --innodb_redo_log_capacity=64M \
  --innodb-log-buffer-size=8M \
  --max-connections=50 \
  --thread-cache-size=8

こちらによって、更に削減。

※ 何をしているか

メモリの大物を削減

  • --innodb-buffer-pool-size=64M
    → データ&インデックスの常駐キャッシュ
    1GB → 64MB
    → 小〜中規模DBなら十分

  • --innodb_redo_log_capacity=64M
    → トランザクションの書き込みログ容量
    → デフォルト(数百MB)を強制縮小

  • --innodb-log-buffer-size=8M
    → トランザクション一時バッファ
    → 書き込み頻度低めなら問題なし

接続・スレッドを制限

  • --max-connections=50
    → 同時接続数を制限
    → メモリ爆発防止(1接続あたり数MB)

  • --thread-cache-size=8
    → スレッド使い回し
    → CPU負荷とメモリのバランス取り

チューニング後の状態

  • 安定
  • 軽量(130MB前後)
  • Railway / 個人プロダクト最適

140MB行かないくらいで常時稼働させています。

 

また、2サービス稼働させていても、半月経ってもまだ無料枠分が残っています(最初の方の日は非チューニンだったので予定より減っている)

ここ以外にも、DjangoやRails側も調整しましたが、内容はまた追って。

ということで、Railwayで使う際の注意点として使用に向いているのは、

  • 個人開発

  • PoC / MVP

  • 小〜中規模サービス

と言ったところで、大規模サービスやトラフィックの多いサービスなどには向いてはいないかと思いますので、その際は別のPaaSの検討もしたほうが良いのかと。

ということで、調子乗ってRailsサービスも移行しましたので、次はその内容でもと。

ではではぁ。

またまたぁ。

 

 

Comment

Related Article

【Railway】MySQLサービスをコスト抑えて運用する

2026.01.19

あけましておめでとうございますmm DjangoアプリをRailwayに移行する。

2026.01.06

CATEGORY LIST

LATEST NEWS

たびのきろく

イベント

2026.02.23

【Railway】MySQLサービスをコスト抑えて運用する

運用

2026.01.19

あけましておめでとうございますmm DjangoアプリをRailwayに移行する。

運用

2026.01.06

効率の良い AI駆動開発について考える

AI・Bot・algorithm

2025.11.09

MacとClaude Codeで構築する cc65(NES)開発環境

Game

2025.10.24

Three.js - ShaderMaterialで、ブレンドシェイプ(MorphTarget)アニメーション対応

JavaScript

2025.10.15

ゲーム開発に必要な基本数学入門

Rust

2025.08.15

Godot 4 & WebAssemblyで様々なデータフォーマットを処理

Godot

2025.07.06

Godot 4 & WebAssemblyで、Hello WebAssembly! - godot-wasm

Godot

2025.06.21

Godot 4 & Rust 始め方

Rust

2025.06.19

ご、ごめん。。今はFlutterの気分じゃないんだ。。

Flutter

2025.05.30

AIのために働け。AI リーダブルコーディングな未来。

AI・Bot・algorithm

2025.05.21

RANKING

Follow

SPONSOR

現在、掲載募集中です。



Links

About Us

WEBデザイナーの、WEBデザイナーによる、WEBデザイナーの為のサイト。「みんなで書こう!」と仲間を募ってみたが、結局書くのは自分だけとなってしまいました。日々のメモを綴っていきます。

Entry Profile

Graphical FrontEnd Engineer
- Daisuke Takayama

MAD CITY 北九州市で生まれ育つ。20代はバンド活動に明け暮れ、ふと「webデザイナーになりたい。」と思い、デジタルハリウッド福岡校入学。卒業後、数々の賞を受賞、web業界をざわつかせる。
現在、主に、ゲーム制作中心に港区六本木界隈で活動中。

FOLLOW US