这很可能不是反向代理直接导致的。
对于通过 API 创建的帖子,Discourse 会在 PostsController#create 周围使用 DistributedMemoizer 以避免重复创建 API 帖子。该 Memoizer 使用基于 Redis 的 DistributedMutex,其有效期非常短,仅为 1 秒。此警告意味着在该锁内的帖子创建/序列化工作耗时超过了预期。
因此:
- 如果 API 帖子仍然成功创建,那么这只是一个警告,而非根本故障;
expected max: 1 secs, took an extra 1 secs表示锁被占用了大约 2 秒;- 这更可能与服务器性能、Redis/Postgres 延迟、磁盘 I/O、CPU/内存压力、插件或缓慢的帖子处理有关,而不是 nginx/1Panel 反向代理本身的问题;
- 之所以仅出现在 API 发帖时,是因为该 Memoizer 路径专用于 API 请求。
值得检查的事项:
- API 请求是否成功,并且只创建了一个帖子?
- 从客户端角度看,API 请求耗时多久?
- 在 API 发帖期间,CPU、内存、交换空间或磁盘 I/O 是否已饱和?
- Redis 和 Postgres 是否位于同一容器/主机内,且运行正常?
- 如果发布的是纯文本小帖子且没有图片或上传内容,警告是否仍然出现?
- 是否安装了非标准插件?
由于这是 1Panel/容器部署,而非标准的 Discourse Docker 安装,如果可能的话,在将其视为 Discourse 核心缺陷之前,最好在官方支持的安装环境中进行复现测试。