ページ内ナビ
概要
PumaはRuby/Rack application向けのmulti-threaded Web serverです。single processのthread poolに加え、cluster modeで複数workerをforkでき、preload、SSL、rolling restart等を組み合わせてproduction topologyを構成できます。mainは8.0.2を宣言しています。
特徴と向いている用途
公式資料に基づく紹介・実機未検証 · 内容確認日:
主な特徴
thread poolとcluster workerを組み合わせてRack applicationを並列処理する
各requestをthreadで処理し、cluster modeではmasterから複数worker processをforkして各workerにthread poolを持たせられます。preloadによるcopy-on-write、SSL、rolling restart、UNIX/TCP socket等もproduction運用に組み込めます。
出典:[2]
Puma 8ではIO-bound requestを通常thread poolとは別枠で吸収できる
8.0でenv["puma.mark_as_io_bound"]とmax_io_threadsが追加され、混在workloadでIO待ちのrequestを通常のthread上限を超えて処理する構成を選べます。thread poolのmin/maxをruntime更新するAPIも追加されています。
出典:[4]
向いている用途
Rails・Sinatra等のRack applicationをsingle processからmulti-worker productionまで運用したい場合に向く
developmentの単一processから、worker数・thread数・preload・restart policyを調整するproductionまで同じserverを使いたいRuby backendに適します。Railsのdefault serverでもあります。
出典:[2]
導入前の確認
MRIのGVL、DB connection pool、fork lifecycleとPROXY protocol securityを合わせて設計する
MRIではRuby codeを同時実行できるthreadがGVLで制限されるため、thread数増加がCPU-bound workloadの線形性能向上を意味しません。DB poolはworker×thread構成と整合させ、preload/fork時はsocketやbackground threadの再接続をhookで管理します。mainは8.0.2でRuby 3.0以上を要求し、8.0.2ではPROXY protocol v1のinjection/spoofing対策が入っています。
参考にした公式資料
- [1]puma/puma — GitHub repository(2026-10-06)
- [2]Puma — README(2026-10-06)
- [3]Puma — puma.gemspec(2026-10-06)
- [4]Puma — History(2026-10-06)
- [5]Puma — BSD-3-Clause License(2026-10-06)
編集部からの補足
Ruby/Rack applicationの実行基盤として、thread数とworker数の組み合わせを明示的に設計できるのが強みです。MRIではGVLがあるためCPU-bound処理はthread増加だけで伸びず、DB connection poolやfork後のsocket/background thread再初期化まで含めて容量設計してください。
3ステップで試す
- 1
ソースを取得
git clone --depth 1 https://github.com/puma/puma.git - 2
リポジトリへ移動
cd puma - 3
公式手順を確認
READMEのInstallation / Quick Start / Getting Startedにある公式コマンドを続けて実行してください。
find . -maxdepth 1 -iname 'README*' -exec sed -n '1,220p' {} \; -quit
成長
成長の推移 · 直近30日
7,915 Stars
推移データを蓄積中です。
開発アクティビティ
直近90日・週次
- Commit(直近30日)
- 22
- Open PR
- 25
開発アクティビティを蓄積中です。
Built with
カテゴリとタグ
カテゴリ
GitHubデータ
GitHubのデータGitHubの詳細データを見る
GitHub Topics
- ruby
- server
- multithreading
- rack
- Stars
- 7,915
- Forks
- 1,502
- Watchers
- 172
- Open Issues
- 62
- Contributors
- 403
- 所有者種別
- Organization
- 主要言語
- Ruby
- ライセンス
- BSD-3-Clause
- リポジトリ最終更新
- 2026/10/03
関連情報
関連記事を投稿するこのOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。
あわせて探訪
- Rack5,131 Stars
共通タグ 2件 · 共通カテゴリ 2件 · 同じ言語
Web serverとRuby frameworkを最小request/response interfaceでつなぎ、middleware stackを共通化する
Ruby - Faraday5,951 Stars
共通タグ 2件 · 共通カテゴリ 1件 · 同じ言語
RubyのHTTP通信を共通APIで扱い、アダプターとミドルウェアを用途に合わせて組み替えるクライアントライブラリ
Ruby - HTTParty5,901 Stars
共通タグ 2件 · 共通カテゴリ 1件 · 同じ言語
RubyからHTTP APIを簡潔に呼び出し、応答の本文・状態・ヘッダーを扱うクライアントライブラリ
Ruby - WebMock4,049 Stars
共通タグ 2件 · 共通カテゴリ 1件 · 同じ言語
RubyのHTTP requestを実networkへ送らずstubし、method・URI・header・bodyに対する期待値をtestで検証する
Ruby - aiohttp16,569 Stars
共通タグ 2件 · 共通カテゴリ 1件
asyncioでHTTP client・server・WebSocketを構築するPython framework
Python - Hyper16,351 Stars
共通タグ 2件 · 共通カテゴリ 1件
HTTP/1・HTTP/2のclient/serverを組み立てるRustの低レベルHTTPライブラリ
Rust
情報の誤りを報告
掲載内容に誤りや古い情報があればお知らせください。