La connessione di rete Redis sta funzionando estremamente male

Ottengo costantemente questo nei log, con valori compresi tra circa 100k e circa 1,35 milioni, ma le letture vicine a 100k sembrano essere abbastanza comuni:

La tua connessione di rete Redis sta funzionando in modo estremamente scadente. Le ultime letture RTT sono state [97069, 103986, 98459, 100762, 381617], idealmente dovrebbero essere < 1000. Assicurati che Redis sia in esecuzione nella stessa AZ o data center di Sidekiq. Se questi valori sono vicini a 100.000, significa che il tuo processo Sidekiq potrebbe essere saturato di CPU; riduci la concorrenza e/o consulta https://github.com/mperham/sidekiq/discussions/5039

Questo indica che forse Redis non è in grado di utilizzare abbastanza CPU? Sembra esserci molto spazio per la CPU e la RAM sul server stesso.

Inoltre:
Sidekiq sta consumando troppa memoria (utilizzando: 3570.19M) per 'www.example.com', riavvio

Questo utilizza l’app.yml all-in-one con Discourse stable 3.3.2.

Da app.yml:

UNICORN_SIDEKIQS: 9
DISCOURSE_SIDEKIQ_WORKERS: 5

Ho aggiunto anche questa configurazione all’host:

Informazioni sulla dashboard di Sidekiq:


Sembra proprio che Redis non sia in grado di superare l’utilizzo di memoria di 1024M.

Se qualcuno ha qualche idea, la apprezzerei! :meow_heart:

Per dare seguito a questo, sto riscontrando lo stesso problema con Jobs::PostAlert:

Con questi job che spesso arrivano a 15 minuti quando si utilizzano 4 sidekiq con 5 (predefiniti) thread con i test attuali. Sembra che la velocitĂ  dei job al secondo per Sidekiq dipenda principalmente da quanti di questi job vengono eseguiti contemporaneamente e quanti thread sono liberi per gli altri job.

Aumentare i Sidekiq a 6 o piĂą (5 thread) aumenterĂ  la velocitĂ  di svuotamento della coda, ma postgres si bloccherĂ  abbastanza regolarmente (ipotizzo a causa di troppi job Jobs::PostAlert eseguiti contemporaneamente).

Questo è su Stable 3.3.2. Le modifiche e correzioni dal thread collegato sembrano essere già state implementate in 3.3.2, se non erro.

Postgres non dovrebbe mai bloccarsi e in genere indica un bug di postgres o una sorta di problema piĂą grande.

Hai dei log?

Hai riavviato il server da quando hai apportato quelle modifiche alla configurazione del kernel?

Forse

lscpu

sarebbe anche utile

Non dovresti mai aumentare UNICORN_SIDEKIQS così tanto, aumentando solo i worker ma

Questo non dovrebbe mai succedere.

Le possibilitĂ  sono:

  1. Sei limitato nelle risorse perché o
    a) Il tuo sito ha superato le risorse del server
    b) Stai allocando male le risorse
  2. C’è un bug da qualche parte nello stack

Inizierei impostando

UNICORN_SIDEKIQS: 1
DISCOURSE_SIDEKIQ_WORKERS: 20

che dovrebbe liberare un po’ di RAM dal tuo server.

Per ulteriori informazioni dovrai eseguire i job in questione in una console PostgreSQL e segnalare qual è il collo di bottiglia.

Mi scuso per la mia assenza e grazie per le risposte. :slight_smile:

Credo che il problema principale della lentezza di Redis fosse che THP fosse ancora abilitato (quando pensavo il contrario):

Per i crash di PG, la soluzione principale per me è stata aggiungere questo a app.yml:

docker_args:
  - "--shm-size=34g"

Con il valore impostato su db_shared_buffers + 2GB, dove db_shared_buffers è il 25% della RAM totale della macchina host.

Sovrascrivendo il valore predefinito di 512m:

Ho riguardato la cronologia dei tuoi post e vedo in Problema di Sidekiq molto lento… enormi quantità di notifiche utente non lette che stavi utilizzando un server con 32 core e 128 GB di RAM, con una base di utenti molto ampia e attiva. Quindi, in quel contesto, capisco perché 34G non sia un numero così grande! Per dare un contesto, tuttavia, potrebbe essere utile (e interessante) conoscere le dimensioni della tua configurazione, magari qui o anche nella tua biografia? (forse utenti attivi giornalieri e mensili, dimensioni dei backup del database, configurazione del server in termini di RAM, swap, disco, CPU). Magari anche un thread in cui condividiamo semplicemente le nostre statistiche, grandi e piccole.