From 5ed2a9c4d313862920370b2610b53e00cee4f2e5 Mon Sep 17 00:00:00 2001 From: Ichiro TAKAHASHI Date: Fri, 26 Jun 2026 14:23:22 +0900 Subject: [PATCH 1/4] =?UTF-8?q?issue100:=20PostgreSQL=20=E3=81=AE=E3=83=81?= =?UTF-8?q?=E3=83=A5=E3=83=BC=E3=83=8B=E3=83=B3=E3=82=B0=E9=A0=85=E7=9B=AE?= =?UTF-8?q?=E3=82=92=E7=92=B0=E5=A2=83=E5=A4=89=E6=95=B0=E3=81=A7=E8=AA=BF?= =?UTF-8?q?=E6=95=B4=E5=8F=AF=E8=83=BD=E3=81=AB=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 標準シングル構成 (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 --- ke2/services/postgres.yml | 27 +++++++++++++++++++++++++++ ke2/single/basic/README.md | 6 ++++++ 2 files changed, 33 insertions(+) diff --git a/ke2/services/postgres.yml b/ke2/services/postgres.yml index 16201b0..b58037b 100644 --- a/ke2/services/postgres.yml +++ b/ke2/services/postgres.yml @@ -3,10 +3,37 @@ services: # MEMO: potgrsql のメジャーバージョンを変更するときは PGDATA 領域のボリューム名も変更すること image: registry.hub.docker.com/library/postgres:16.3-alpine hostname: db-${HOSTNAME:?HOSTNAME must be set} + # PostgreSQL のチューニング項目を環境変数で調整可能にする。 + # 既定値は postgres 16 の標準値なので、未指定なら従来挙動と同じ。 + # シェル/.env でも docker-compose.override.yml の environment ブロックでも上書き可。 + # [重要] uWSGI のワーカ並列度 (processes x threads) を上げると同時 DB 接続数が増えるため、 + # max_connections も連動して引き上げること。超過すると + # "FATAL: sorry, too many clients already" で接続が拒否され、画面/API が 500 になる。 + # 項目を追加する場合は environment に POSTGRES_ を足し、command にも + # -c ="$$POSTGRES_" を足す (例: max_wal_size 等)。 environment: POSTGRES_PASSWORD: kompira POSTGRES_USER: kompira TZ: ${TZ:-Asia/Tokyo} + POSTGRES_MAX_CONNECTIONS: ${POSTGRES_MAX_CONNECTIONS:-100} + POSTGRES_SHARED_BUFFERS: ${POSTGRES_SHARED_BUFFERS:-128MB} + POSTGRES_EFFECTIVE_CACHE_SIZE: ${POSTGRES_EFFECTIVE_CACHE_SIZE:-4GB} + POSTGRES_WORK_MEM: ${POSTGRES_WORK_MEM:-4MB} + POSTGRES_MAINTENANCE_WORK_MEM: ${POSTGRES_MAINTENANCE_WORK_MEM:-64MB} + # command はコンテナ内シェルで環境変数を展開してから postgres を起動する。 + # ($$ は compose のパース時置換を避けるエスケープ。これによりコンテナ実行時に + # 上記 environment の値=override.yml での上書きが反映される。 + # docker-entrypoint.sh 経由なので初回起動時の DB 初期化も従来どおり行われる) + command: + - sh + - -c + - > + exec docker-entrypoint.sh postgres + -c max_connections="$$POSTGRES_MAX_CONNECTIONS" + -c shared_buffers="$$POSTGRES_SHARED_BUFFERS" + -c effective_cache_size="$$POSTGRES_EFFECTIVE_CACHE_SIZE" + -c work_mem="$$POSTGRES_WORK_MEM" + -c maintenance_work_mem="$$POSTGRES_MAINTENANCE_WORK_MEM" volumes: - ${PGDATA:-kompira_pg16}:/var/lib/postgresql/data volumes: diff --git a/ke2/single/basic/README.md b/ke2/single/basic/README.md index 2b41be9..bf98513 100644 --- a/ke2/single/basic/README.md +++ b/ke2/single/basic/README.md @@ -43,10 +43,16 @@ docker compose up するときに環境変数を指定することで、簡易 | 環境変数 | 備考 | | ------------------ | ------------------------------------------------------------------------------------------- | | `KOMPIRA_LOG_DIR` | ログファイルの出力先ディレクトリ(未指定の場合は kompira_log ボリューム内に出力されます) | +| `POSTGRES_MAX_CONNECTIONS` | PostgreSQL の最大同時接続数(既定 100)。Web の同時処理数(uWSGI の processes×threads)を増やす場合は連動して引き上げてください | +| `POSTGRES_SHARED_BUFFERS` | PostgreSQL の共有バッファサイズ(既定 128MB) | +| `POSTGRES_EFFECTIVE_CACHE_SIZE` | プランナのキャッシュサイズ見積り(既定 4GB) | +| `POSTGRES_WORK_MEM` | クエリ毎のソート/ハッシュ作業メモリ(既定 4MB) | +| `POSTGRES_MAINTENANCE_WORK_MEM` | VACUUM・インデックス作成の作業メモリ(既定 64MB) | カスタマイズ例: $ KOMPIRA_LOG_DIR=/var/log/kompira docker compose up -d + $ POSTGRES_MAX_CONNECTIONS=200 POSTGRES_SHARED_BUFFERS=512MB docker compose up -d ### 詳細なカスタマイズ From b4f1f7c7831b22132137a1bb76544ab6dba794e9 Mon Sep 17 00:00:00 2001 From: Ichiro TAKAHASHI Date: Fri, 26 Jun 2026 18:16:25 +0900 Subject: [PATCH 2/4] =?UTF-8?q?issue100:=20uWSGI=20=E3=81=AE=E3=83=AF?= =?UTF-8?q?=E3=83=BC=E3=82=AB=E4=B8=A6=E5=88=97=E5=BA=A6=E3=81=A8=20nginx?= =?UTF-8?q?=20=E3=82=BF=E3=82=A4=E3=83=A0=E3=82=A2=E3=82=A6=E3=83=88?= =?UTF-8?q?=E3=82=92=E7=92=B0=E5=A2=83=E5=A4=89=E6=95=B0=E3=81=A7=E8=AA=BF?= =?UTF-8?q?=E6=95=B4=E5=8F=AF=E8=83=BD=E3=81=AB=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- configs/nginx.conf | 7 ++++--- ke2/services/kompira.yml | 9 +++++++++ ke2/services/nginx.yml | 2 ++ ke2/single/basic/README.md | 11 +++++++++++ 4 files changed, 26 insertions(+), 3 deletions(-) diff --git a/configs/nginx.conf b/configs/nginx.conf index e4768c0..75b3c78 100644 --- a/configs/nginx.conf +++ b/configs/nginx.conf @@ -6,9 +6,10 @@ upstream django { # Specify the default charset charset utf-8; -# uwsgi タイムアウトの設定 -uwsgi_send_timeout 300; -uwsgi_read_timeout 300; +# uwsgi タイムアウトの設定 (環境変数 KOMPIRA_NGINX_UWSGI_TIMEOUT で調整可能、既定 300 秒) +# .wait / .recv を長め timeout で使う場合はこれ以上に、枯渇時に早期失敗させたい場合は短めに調整する。 +uwsgi_send_timeout ${KOMPIRA_NGINX_UWSGI_TIMEOUT}; +uwsgi_read_timeout ${KOMPIRA_NGINX_UWSGI_TIMEOUT}; ### for KE: MAX_PATH_LENGTH=MAX_CHAR_LENGTH = 1024 ### # for reading large client request header. A request line cannot exceed the size of one buffer diff --git a/ke2/services/kompira.yml b/ke2/services/kompira.yml index d4dc37b..db2ace2 100644 --- a/ke2/services/kompira.yml +++ b/ke2/services/kompira.yml @@ -63,6 +63,15 @@ services: AUDIT_LOGGING_WHEN: ${KOMPIRA_AUDIT_LOGGING_WHEN:-${AUDIT_LOGGING_WHEN:-MIDNIGHT}} AUDIT_LOGGING_INTERVAL: ${KOMPIRA_AUDIT_LOGGING_INTERVAL:-${AUDIT_LOGGING_INTERVAL:-1}} UWSGI_BUFFER_SIZE: 65536 + # uWSGI のワーカ並列度・タイムアウト系 (本体イメージの docker-entrypoint.sh が解釈する)。 + # 既定値は本体の既定と同じ (processes=5, threads=1, listen=100, harakiri 無効, thunder-lock 無効)。 + # 同時処理数 = processes x threads。上げる場合は postgres の max_connections も連動させること + # (processes x threads + 余裕 <= max_connections)。 + UWSGI_PROCESSES: ${UWSGI_PROCESSES:-5} + UWSGI_THREADS: ${UWSGI_THREADS:-1} + UWSGI_LISTEN: ${UWSGI_LISTEN:-100} + UWSGI_HARAKIRI: ${UWSGI_HARAKIRI:-0} + UWSGI_THUNDER_LOCK: ${UWSGI_THUNDER_LOCK:-false} hostname: ap-${HOSTNAME:?HOSTNAME must be set} init: true command: ["uwsgi"] diff --git a/ke2/services/nginx.yml b/ke2/services/nginx.yml index e4cea2f..1b59c13 100644 --- a/ke2/services/nginx.yml +++ b/ke2/services/nginx.yml @@ -7,6 +7,8 @@ services: - NGINX_ENVSUBST_FILTER=^KOMPIRA - KOMPIRA_HOST=${KOMPIRA_HOST:-kompira} - KOMPIRA_PORT=${KOMPIRA_PORT:-8000} + # uwsgi タイムアウト(秒)。envsubst は ${VAR:-default} 非対応のため既定値はここで与える + - KOMPIRA_NGINX_UWSGI_TIMEOUT=${KOMPIRA_NGINX_UWSGI_TIMEOUT:-300} configs: # MEMO: /etc/nginx/templates/*.template は起動時に環境変数が展開されて /etc/nginx/conf.d/* に書き出される - source: nginx-config diff --git a/ke2/single/basic/README.md b/ke2/single/basic/README.md index bf98513..95559da 100644 --- a/ke2/single/basic/README.md +++ b/ke2/single/basic/README.md @@ -48,11 +48,22 @@ docker compose up するときに環境変数を指定することで、簡易 | `POSTGRES_EFFECTIVE_CACHE_SIZE` | プランナのキャッシュサイズ見積り(既定 4GB) | | `POSTGRES_WORK_MEM` | クエリ毎のソート/ハッシュ作業メモリ(既定 4MB) | | `POSTGRES_MAINTENANCE_WORK_MEM` | VACUUM・インデックス作成の作業メモリ(既定 64MB) | +| `UWSGI_PROCESSES` | Web サーバ(uWSGI)のワーカプロセス数(既定 5、目安は CPU コア数) | +| `UWSGI_THREADS` | ワーカ1プロセスあたりのスレッド数(既定 1)。同時処理数 = processes×threads。.wait/.recv 多用時に増やす | +| `UWSGI_LISTEN` | uWSGI の listen バックログ(既定 100) | +| `UWSGI_HARAKIRI` | uWSGI のリクエストタイムアウト秒(既定 0=無効) | +| `UWSGI_THUNDER_LOCK` | スレッド併用時の accept 公平化(既定 false。threads を増やす場合は true 推奨) | +| `KOMPIRA_NGINX_UWSGI_TIMEOUT` | nginx→uWSGI のタイムアウト秒(既定 300)。.wait/.recv を長め timeout で使う場合は連動して延ばす | + +なお、同時処理数(`UWSGI_PROCESSES`×`UWSGI_THREADS`)を増やす場合は、同時 DB 接続が +増えるため `POSTGRES_MAX_CONNECTIONS` も連動して引き上げてください +(目安: `processes×threads + 余裕(~15) <= max_connections`)。 カスタマイズ例: $ KOMPIRA_LOG_DIR=/var/log/kompira docker compose up -d $ POSTGRES_MAX_CONNECTIONS=200 POSTGRES_SHARED_BUFFERS=512MB docker compose up -d + $ UWSGI_PROCESSES=8 UWSGI_THREADS=8 UWSGI_THUNDER_LOCK=true POSTGRES_MAX_CONNECTIONS=200 docker compose up -d ### 詳細なカスタマイズ From a6d2d068cab2bdcddec4eb1da6910e0cec787f83 Mon Sep 17 00:00:00 2001 From: Ichiro TAKAHASHI Date: Fri, 26 Jun 2026 18:17:00 +0900 Subject: [PATCH 3/4] =?UTF-8?q?issue100:=20ChangeLog=20=E3=82=92=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 --- ChangeLog | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ChangeLog b/ChangeLog index 8ab0309..d1e47f3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2026-06-26 Ichiro TAKAHASHI + + * 標準シングル構成の PostgreSQL チューニング項目 (max_connections / shared_buffers / effective_cache_size / work_mem / maintenance_work_mem) を環境変数 POSTGRES_* で調整可能にしました。既定値は標準値のままです。(#100) + + * 標準シングル構成の uWSGI ワーカ並列度・タイムアウト系 (UWSGI_PROCESSES / UWSGI_THREADS / UWSGI_LISTEN / UWSGI_HARAKIRI / UWSGI_THUNDER_LOCK) を環境変数で調整可能にしました。既定値は従来挙動と同じです。高負荷時の .wait / .recv によるワーカ枯渇を緩和できます。同時処理数を上げる場合は POSTGRES_MAX_CONNECTIONS も連動して引き上げてください。(#100) + + * nginx の uwsgi タイムアウトを環境変数 KOMPIRA_NGINX_UWSGI_TIMEOUT (既定 300 秒) で調整可能にしました。(#100) + 2026-02-20 Ichiro TAKAHASHI * create-cert.sh: Python 3.13 および厳格なSSL検証環境に対応しました。(#95) From c48af132d01a524d1047089ca55ef0b12c51aa36 Mon Sep 17 00:00:00 2001 From: Ichiro TAKAHASHI Date: Thu, 2 Jul 2026 09:38:23 +0900 Subject: [PATCH 4/4] =?UTF-8?q?issue100:=20=E3=83=AC=E3=83=93=E3=83=A5?= =?UTF-8?q?=E3=83=BC=E6=8C=87=E6=91=98=E5=AF=BE=E5=BF=9C=20(KOMPIRA=5F=20?= =?UTF-8?q?=E4=B8=8A=E6=9B=B8=E3=81=8D=20/=20nginx=20timeout=20=E3=82=92?= =?UTF-8?q?=20read/send=20=E5=88=86=E5=89=B2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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) --- ChangeLog | 2 +- configs/nginx.conf | 6 +++--- ke2/services/kompira.yml | 12 +++++++----- ke2/services/nginx.yml | 5 +++-- ke2/single/basic/README.md | 3 ++- 5 files changed, 16 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index d1e47f3..c88296c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,7 +4,7 @@ * 標準シングル構成の uWSGI ワーカ並列度・タイムアウト系 (UWSGI_PROCESSES / UWSGI_THREADS / UWSGI_LISTEN / UWSGI_HARAKIRI / UWSGI_THUNDER_LOCK) を環境変数で調整可能にしました。既定値は従来挙動と同じです。高負荷時の .wait / .recv によるワーカ枯渇を緩和できます。同時処理数を上げる場合は POSTGRES_MAX_CONNECTIONS も連動して引き上げてください。(#100) - * nginx の uwsgi タイムアウトを環境変数 KOMPIRA_NGINX_UWSGI_TIMEOUT (既定 300 秒) で調整可能にしました。(#100) + * nginx の uwsgi read/send タイムアウトを環境変数 KOMPIRA_NGINX_UWSGI_READ_TIMEOUT / KOMPIRA_NGINX_UWSGI_SEND_TIMEOUT (各既定 300 秒) で個別に調整可能にしました。(#100) 2026-02-20 Ichiro TAKAHASHI diff --git a/configs/nginx.conf b/configs/nginx.conf index 75b3c78..1595f1a 100644 --- a/configs/nginx.conf +++ b/configs/nginx.conf @@ -6,10 +6,10 @@ upstream django { # Specify the default charset charset utf-8; -# uwsgi タイムアウトの設定 (環境変数 KOMPIRA_NGINX_UWSGI_TIMEOUT で調整可能、既定 300 秒) +# uwsgi タイムアウトの設定 (環境変数で調整可能、既定 300 秒)。 # .wait / .recv を長め timeout で使う場合はこれ以上に、枯渇時に早期失敗させたい場合は短めに調整する。 -uwsgi_send_timeout ${KOMPIRA_NGINX_UWSGI_TIMEOUT}; -uwsgi_read_timeout ${KOMPIRA_NGINX_UWSGI_TIMEOUT}; +uwsgi_send_timeout ${KOMPIRA_NGINX_UWSGI_SEND_TIMEOUT}; +uwsgi_read_timeout ${KOMPIRA_NGINX_UWSGI_READ_TIMEOUT}; ### for KE: MAX_PATH_LENGTH=MAX_CHAR_LENGTH = 1024 ### # for reading large client request header. A request line cannot exceed the size of one buffer diff --git a/ke2/services/kompira.yml b/ke2/services/kompira.yml index db2ace2..f35761f 100644 --- a/ke2/services/kompira.yml +++ b/ke2/services/kompira.yml @@ -64,14 +64,16 @@ services: AUDIT_LOGGING_INTERVAL: ${KOMPIRA_AUDIT_LOGGING_INTERVAL:-${AUDIT_LOGGING_INTERVAL:-1}} UWSGI_BUFFER_SIZE: 65536 # uWSGI のワーカ並列度・タイムアウト系 (本体イメージの docker-entrypoint.sh が解釈する)。 + # コンテナへ渡すキー名 (UWSGI_*) は本体 entrypoint が読む名前なので変更しないこと。 + # 値は他の変数同様 KOMPIRA_ 上書き → 無印 → 既定 の順で解決する。 # 既定値は本体の既定と同じ (processes=5, threads=1, listen=100, harakiri 無効, thunder-lock 無効)。 # 同時処理数 = processes x threads。上げる場合は postgres の max_connections も連動させること # (processes x threads + 余裕 <= max_connections)。 - UWSGI_PROCESSES: ${UWSGI_PROCESSES:-5} - UWSGI_THREADS: ${UWSGI_THREADS:-1} - UWSGI_LISTEN: ${UWSGI_LISTEN:-100} - UWSGI_HARAKIRI: ${UWSGI_HARAKIRI:-0} - UWSGI_THUNDER_LOCK: ${UWSGI_THUNDER_LOCK:-false} + UWSGI_PROCESSES: ${KOMPIRA_UWSGI_PROCESSES:-${UWSGI_PROCESSES:-5}} + UWSGI_THREADS: ${KOMPIRA_UWSGI_THREADS:-${UWSGI_THREADS:-1}} + UWSGI_LISTEN: ${KOMPIRA_UWSGI_LISTEN:-${UWSGI_LISTEN:-100}} + UWSGI_HARAKIRI: ${KOMPIRA_UWSGI_HARAKIRI:-${UWSGI_HARAKIRI:-0}} + UWSGI_THUNDER_LOCK: ${KOMPIRA_UWSGI_THUNDER_LOCK:-${UWSGI_THUNDER_LOCK:-false}} hostname: ap-${HOSTNAME:?HOSTNAME must be set} init: true command: ["uwsgi"] diff --git a/ke2/services/nginx.yml b/ke2/services/nginx.yml index 1b59c13..d0e8614 100644 --- a/ke2/services/nginx.yml +++ b/ke2/services/nginx.yml @@ -7,8 +7,9 @@ services: - NGINX_ENVSUBST_FILTER=^KOMPIRA - KOMPIRA_HOST=${KOMPIRA_HOST:-kompira} - KOMPIRA_PORT=${KOMPIRA_PORT:-8000} - # uwsgi タイムアウト(秒)。envsubst は ${VAR:-default} 非対応のため既定値はここで与える - - KOMPIRA_NGINX_UWSGI_TIMEOUT=${KOMPIRA_NGINX_UWSGI_TIMEOUT:-300} + # 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} configs: # MEMO: /etc/nginx/templates/*.template は起動時に環境変数が展開されて /etc/nginx/conf.d/* に書き出される - source: nginx-config diff --git a/ke2/single/basic/README.md b/ke2/single/basic/README.md index 95559da..f5457d8 100644 --- a/ke2/single/basic/README.md +++ b/ke2/single/basic/README.md @@ -53,7 +53,8 @@ docker compose up するときに環境変数を指定することで、簡易 | `UWSGI_LISTEN` | uWSGI の listen バックログ(既定 100) | | `UWSGI_HARAKIRI` | uWSGI のリクエストタイムアウト秒(既定 0=無効) | | `UWSGI_THUNDER_LOCK` | スレッド併用時の accept 公平化(既定 false。threads を増やす場合は true 推奨) | -| `KOMPIRA_NGINX_UWSGI_TIMEOUT` | nginx→uWSGI のタイムアウト秒(既定 300)。.wait/.recv を長め timeout で使う場合は連動して延ばす | +| `KOMPIRA_NGINX_UWSGI_READ_TIMEOUT` | nginx→uWSGI の read タイムアウト秒(既定 300)。.wait/.recv を長め timeout で使う場合は連動して延ばす | +| `KOMPIRA_NGINX_UWSGI_SEND_TIMEOUT` | nginx→uWSGI の send タイムアウト秒(既定 300) | なお、同時処理数(`UWSGI_PROCESSES`×`UWSGI_THREADS`)を増やす場合は、同時 DB 接続が 増えるため `POSTGRES_MAX_CONNECTIONS` も連動して引き上げてください