issue100: uWSGI 並列度・タイムアウトと PostgreSQL チューニングを環境変数で調整可能にする#101
Closed
tichi73 wants to merge 4 commits into
Closed
Conversation
標準シングル構成 (ke2/services/postgres.yml) の PostgreSQL チューニング項目を 環境変数で調整可能にした。既定値は postgres 16 の標準値なので未指定なら従来挙動と 同じ。 POSTGRES_MAX_CONNECTIONS (100) / POSTGRES_SHARED_BUFFERS (128MB) / POSTGRES_EFFECTIVE_CACHE_SIZE (4GB) / POSTGRES_WORK_MEM (4MB) / POSTGRES_MAINTENANCE_WORK_MEM (64MB) 実装は command を `sh -c 'exec docker-entrypoint.sh postgres -c key="$$POSTGRES_KEY" ...'` とし、コンテナ実行時にシェルが environment の値を展開する方式にした。これにより シェル/.env だけでなく docker-compose.override.yml の environment ブロックでの 上書きも反映される (uWSGI_* と同じ感覚で設定できる)。$$ は compose のパース時 置換を避けるエスケープ。docker-entrypoint.sh 経由なので初回起動時の DB 初期化も 従来どおり行われる。 背景: uWSGI のワーカ並列度 (processes×threads) を上げると同時 DB 接続が増え、 max_connections=100 (stock 既定) を超えると "too many clients" で画面/API が 500 になることを実機で確認したため、並列度と連動して調整できるよう env 化する。 README に環境変数表と例を追記。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
kompira サービスに uWSGI のワーカ並列度・タイムアウト系の環境変数を追加
(本体イメージの docker-entrypoint.sh が解釈する。既定値は本体既定と同じ):
UWSGI_PROCESSES (5) / UWSGI_THREADS (1) / UWSGI_LISTEN (100) /
UWSGI_HARAKIRI (0) / UWSGI_THUNDER_LOCK (false)
nginx の uwsgi_read/send_timeout を KOMPIRA_NGINX_UWSGI_TIMEOUT (既定 300) で
調整可能にした。nginx の envsubst は ${VAR:-default} 非対応のため、既定値は
nginx サービスの environment 側で与える。
同時処理数 (processes×threads) を上げる際は postgres の max_connections も
連動させること (processes×threads + 余裕 <= max_connections)。README に
環境変数表・スケーリングの注意・例を追記。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
高負荷時のワーカ占有による Web/API 応答枯渇を緩和するため、標準シングル構成における uWSGI の並列度/タイムアウト、nginx→uWSGI タイムアウト、PostgreSQL の主要チューニング項目を環境変数で調整可能にする変更です(未指定時は従来挙動維持の方針)。
Changes:
- PostgreSQL の主要パラメータを
POSTGRES_*環境変数で上書き可能にし、起動コマンドで-cを付与 - nginx の uwsgi timeout を
KOMPIRA_NGINX_UWSGI_TIMEOUTで調整可能に - uWSGI の並列度/タイムアウト系を環境変数化し、README/ChangeLog に説明を追加
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| ke2/single/basic/README.md | 新規環境変数(Postgres/uWSGI/nginx timeout)と注意点・例を追記 |
| ke2/services/postgres.yml | POSTGRES_* による Postgres パラメータ調整と起動コマンドの上書き追加 |
| ke2/services/nginx.yml | nginx コンテナへ KOMPIRA_NGINX_UWSGI_TIMEOUT をデフォルト付きで注入 |
| ke2/services/kompira.yml | uWSGI の並列度/タイムアウト関連 env を追加 |
| configs/nginx.conf | uwsgi_send/read_timeout を envsubst 変数参照に変更 |
| ChangeLog | #100 の変更点を追記 |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
tichi73
added a commit
that referenced
this pull request
Jul 2, 2026
PR #101 の Copilot レビュー指摘への対応。 - uWSGI 系 env をファイル慣習に合わせ KOMPIRA_UWSGI_* → UWSGI_* → 既定 の 多段フォールバックに変更。コンテナへ渡すキー名 (UWSGI_*) は本体 entrypoint が 読む名前なので維持し、本体イメージとの整合性を保つ。 - nginx の uwsgi タイムアウトを read/send 別変数 (KOMPIRA_NGINX_UWSGI_READ_TIMEOUT / KOMPIRA_NGINX_UWSGI_SEND_TIMEOUT, 各既定 300) に分割。README / ChangeLog も追従。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Comment on lines
+1
to
+3
| -----BEGIN PRIVATE KEY----- | ||
| MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCkVw+juujnRJUQ | ||
| 9mryI48GVj8tWLTuuS+arPLwxZRfu2jd+lCrSGnOxKZ+JOfD4kXK8otx1q/k9Np+ |
Comment on lines
+1
to
+3
| -----BEGIN PRIVATE KEY----- | ||
| MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDMDzvI8jQZkDtR | ||
| 0iyBH0GYajuuqOZGcMAAKb1YXXFZ5dJYGAijjYuaB/iN3o80SfX6LGGW0W3rzFqb |
Comment on lines
+1
to
+3
| -----BEGIN PRIVATE KEY----- | ||
| MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCoWTajt0Fkge5J | ||
| 4aYUh773C5cOm2/xEjtTzPmP6hJz7wKxPS9skZRULHuVjM3e5+w7Uhe+/R9Ogr6I |
Comment on lines
+1
to
+3
| -----BEGIN PRIVATE KEY----- | ||
| MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCZFYyMPkkZEh0m | ||
| 9x4rB0xPhGJNN1ayPnBek83Y/fOt/dPRWxO3O8s7gDQ69/Gs9VavchCgBMgmC3bL |
| | `POSTGRES_WORK_MEM` | クエリ毎のソート/ハッシュ作業メモリ(既定 4MB) | | ||
| | `POSTGRES_MAINTENANCE_WORK_MEM` | VACUUM・インデックス作成の作業メモリ(既定 64MB) | | ||
| | `UWSGI_PROCESSES` | Web サーバ(uWSGI)のワーカプロセス数(既定 5、目安は CPU コア数) | | ||
| | `UWSGI_THREADS` | ワーカ1プロセスあたりのスレッド数(既定 1)。同時処理数 = processes×threads。.wait/.recv 多用時に増やす | |
Comment on lines
+10
to
+12
| # uwsgi の read/send タイムアウト(秒)。envsubst は ${VAR:-default} 非対応のため既定値はここで与える | ||
| - KOMPIRA_NGINX_UWSGI_READ_TIMEOUT=${KOMPIRA_NGINX_UWSGI_READ_TIMEOUT:-300} | ||
| - KOMPIRA_NGINX_UWSGI_SEND_TIMEOUT=${KOMPIRA_NGINX_UWSGI_SEND_TIMEOUT:-300} |
PR #101 の Copilot レビュー指摘への対応。 - uWSGI 系 env をファイル慣習に合わせ KOMPIRA_UWSGI_* → UWSGI_* → 既定 の 多段フォールバックに変更。コンテナへ渡すキー名 (UWSGI_*) は本体 entrypoint が 読む名前なので維持し、本体イメージとの整合性を保つ。 - nginx の uwsgi タイムアウトを read/send 別変数 (KOMPIRA_NGINX_UWSGI_READ_TIMEOUT / KOMPIRA_NGINX_UWSGI_SEND_TIMEOUT, 各既定 300) に分割。README / ChangeLog も追従。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2436133 to
c48af13
Compare
Contributor
Author
|
ブランチに無関係なファイルを誤って含めてしまったため、クリーンなブランチで作り直しました。本 PR は close し、#102 に移行します。 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
概要
高負荷時に Web ワーカ (uWSGI) が長時間占有され、画面や API 全体の応答が枯渇する事象を緩和するため、標準シングル構成の uWSGI ワーカ並列度・タイムアウト、PostgreSQL チューニング、nginx タイムアウトを環境変数で調整可能にします。いずれも既定値は従来挙動を維持するため、未指定なら現行と同じ動作です。
Fixes #100
変更内容
UWSGI_PROCESSES(既定 5) /UWSGI_THREADS(1) /UWSGI_LISTEN(100) /UWSGI_HARAKIRI(0=無効) /UWSGI_THUNDER_LOCK(false)UWSGI_PROCESSES×UWSGI_THREADS。KOMPIRA_NGINX_UWSGI_TIMEOUT(既定 300 秒) で調整可能に。POSTGRES_MAX_CONNECTIONS(100) /POSTGRES_SHARED_BUFFERS(128MB) /POSTGRES_EFFECTIVE_CACHE_SIZE(4GB) /POSTGRES_WORK_MEM(4MB) /POSTGRES_MAINTENANCE_WORK_MEM(64MB)注意
POSTGRES_MAX_CONNECTIONSも連動して引き上げてください。 不足すると "FATAL: sorry, too many clients already" で接続が拒否され、画面/API が 500 になります (目安: processes × threads + 余裕 ≦ max_connections)。UWSGI_*は kompira 本体イメージの起動スクリプトが解釈する前提です。これらを解釈する対応イメージと組み合わせて有効になります (既定値では従来と同一のため、未対応イメージでも動作は変わりません)。