Skip to content

feat: enable Container Insights v2 for ECS clusters#88

Merged
ayuki-joto merged 6 commits intomainfrom
feat/add-containerInsights
Mar 31, 2026
Merged

feat: enable Container Insights v2 for ECS clusters#88
ayuki-joto merged 6 commits intomainfrom
feat/add-containerInsights

Conversation

@ayuki-joto
Copy link
Copy Markdown
Contributor

@ayuki-joto ayuki-joto commented Mar 17, 2026

🎩 What? Why?

負荷試験の結果を踏まえた3つの改善と、モニタリング強化を実施

2026年3月18日に実施した負荷試験で特定されたボトルネックと運用課題への対応。

変更内容

1. WEB_CONCURRENCY=4(Pumaワーカー数 2→4)

  • 問題: 1タスクあたり約13 req/s(2ワーカー×5スレッド=10並列)に留まっていた
  • 変更: ワーカー数を4に増やし、2 vCPUをより有効活用(4ワーカー×5スレッド=20並列)
  • 期待効果: タスク追加なしで1タスクあたりの処理能力が1.5〜2倍に向上
  • 前提: decidim-cfj側のPR(#794)でPumaWorkerKillerのRAM上限を2048→3072 MBに引き上げ済み

2. MALLOC_ARENA_MAX=2(glibcメモリアリーナ制限)

  • 問題: Rubyプロセス(glibc)はデフォルトでCPUコア数×8のメモリアリーナを作成し、メモリ断片化によるメモリ使用量の肥大化が発生する
  • 変更: アリーナ数を2に制限し、ワーカー数増加に伴うメモリ消費増を抑制
  • 根拠: Heroku/Sidekiq公式の推奨設定。ワーカー4つ×デフォルトアリーナだとメモリ断片化が加速し、PumaWorkerKillerによるkillが頻発するリスクがある

3. DECIDIM_THROTTLING_MAX_REQUESTS=1000(Rate Limit引き上げ)

  • 問題: 第1回負荷試験でRack::Attack(デフォルト100 req/分/IP)が作動し、53.6%のリクエストが429エラーとなり、アプリ本体の限界を測定できなかった
  • 本番運用への影響: ワークショップ会場のWi-Fi等、NAT配下で多数のユーザーが同一IPからアクセスする場合にデフォルト100 req/分の上限に到達する可能性がある
  • 変更: 1000 req/分/IPに引き上げ。通常のブラウザ利用(1人4〜6 req/分)を考慮すると、同一IP下で約160〜250人が同時利用可能

4. Container Insights v2 有効化(本番のみ)

  • 問題: 負荷試験中にECSクラスタのContainer Insightsが無効であることが判明した
  • 変更: CDKでprd環境のみContainer Insights v2を有効化し、コード管理下に置く
  • 効果: ECSタスクレベルのCPU・メモリ・ネットワークメトリクスをCloudWatchで収集可能に

📌 Related Issues

📋 Subtasks

  • Add CHANGELOG upgrade notes, if required
  • If there's a new public field, add it to GraphQL API
  • Add documentation regarding the feature
  • Add/modify seeds
  • Add tests
  • Another subtask

📷 Screenshots (optional)

Description

@ayuki-joto ayuki-joto requested review from takahashim and ushios March 24, 2026 07:58
@ayuki-joto ayuki-joto merged commit 7a091ce into main Mar 31, 2026
2 checks passed
@ayuki-joto ayuki-joto deleted the feat/add-containerInsights branch March 31, 2026 08:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant