ログにDistributedMutexのエラー警告が頻繁に表示される

これはおそらくリバースプロキシが直接の原因ではありません。

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 リクエストに使用されるためです。

確認すべき事項:

  1. API リクエストは成功し、1 つの投稿のみが作成されますか?
  2. クライアント側から見た API リクエストの所要時間はどのくらいですか?
  3. API 投稿中に CPU、メモリ、スワップ、またはディスク I/O が飽和していますか?
  4. Redis と Postgres は同じコンテナ/ホスト内にあり、正常に動作していますか?
  5. 非常に小さなプレーンテキストの投稿で画像やアップロードがない場合でも、警告は発生しますか?
  6. 非標準のプラグインがインストールされていますか?

これは標準的な Discourse Docker インストールではなく、1Panel/コンテナデプロイであるため、可能であれば Discourse コアの不具合として扱う前に、公式にサポートされているインストール環境で再現を試みることも役立ちます。