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?

2 Mi Piace

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

Forse

lscpu

sarebbe anche utile

1 Mi Piace

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.

1 Mi Piace

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:

1 Mi Piace

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.