Questo probabilmente non è causato direttamente dal reverse proxy.
Per i post creati via API, Discourse utilizza DistributedMemoizer attorno a PostsController#create per evitare la creazione duplicata di post tramite API. Tale memoizer impiega un DistributedMutex basato su Redis con un tempo di validità molto breve di 1 secondo. L’avviso indica che il lavoro di creazione/serializzazione del post all’interno di quel lock ha richiesto più tempo del previsto.
Quindi:
- se il post API viene comunque creato con successo, si tratta di un avviso e non dell’errore principale;
expected max: 1 secs, took an extra 1 secssignifica che il lock è stato mantenuto per circa 2 secondi;- è più probabile che sia correlato alle prestazioni del server, alla latenza di Redis/Postgres, all’I/O del disco, alla pressione su CPU/RAM, ai plugin o a un’elaborazione lenta del post, piuttosto che al reverse proxy nginx/1Panel stesso;
- il motivo per cui appare solo per la pubblicazione via API è che questo percorso del memoizer è utilizzato per le richieste API.
Cose utili da verificare:
- La richiesta API ha successo e crea un solo post?
- Quanto tempo impiega la richiesta API dal lato client?
- CPU, memoria, swap o I/O del disco sono saturi durante la pubblicazione via API?
- Redis e Postgres risiedono nello stesso container/host e sono funzionanti?
- L’avviso si verifica ancora con un post semplice in testo puro, senza immagini o upload?
- Sono installati plugin non standard?
Poiché si tratta di una distribuzione 1Panel/container e non dell’installazione Docker standard di Discourse, potrebbe essere utile riprodurre il problema su un’installazione ufficialmente supportata, se possibile, prima di considerarlo un bug del core di Discourse.