これはおそらくリバースプロキシが直接の原因ではありません。
API で作成された投稿の場合、重複する API 投稿の作成を防ぐため、Discourse は PostsController#create の周りに DistributedMemoizer を使用します。このメモライザーは、有効時間が非常に短い(1 秒)Redis ベースの DistributedMutex を使用します。この警告は、そのロック内の投稿作成やシリアライゼーション処理が予想以上に時間がかかったことを意味します。
つまり:
- API 投稿が正常に作成されている場合、これは根本的な失敗ではなく警告です。
expected max: 1 secs, took an extra 1 secsは、ロックが約 2 秒間保持されていたことを意味します。- 原因は nginx や 1Panel のリバースプロキシ自体よりも、サーバーのパフォーマンス、Redis/Postgres のレイテンシ、ディスク I/O、CPU/RAM の負荷、プラグイン、または遅い後処理にある可能性が高いです。
- この警告が API 投稿でのみ表示されるのは、このメモライザー経路が API リクエストに使用されるためです。
確認すべき事項:
- API リクエストは成功し、1 つの投稿のみが作成されますか?
- クライアント側から見た API リクエストの所要時間はどのくらいですか?
- API 投稿中に CPU、メモリ、スワップ、またはディスク I/O が飽和していますか?
- Redis と Postgres は同じコンテナ/ホスト内にあり、正常に動作していますか?
- 非常に小さなプレーンテキストの投稿で画像やアップロードがない場合でも、警告は発生しますか?
- 非標準のプラグインがインストールされていますか?
これは標準的な Discourse Docker インストールではなく、1Panel/コンテナデプロイであるため、可能であれば Discourse コアの不具合として扱う前に、公式にサポートされているインストール環境で再現を試みることも役立ちます。