Opzione shm_size di Docker in app.yml

Sarebbe possibile rendere il parametro shm_size un’opzione in app.yml? Oggi ho riscontrato questo errore durante l’esecuzione di vacuum analyze:

ERROR: could not resize shared memory segment

Il sistema stava tentando di aumentare l’utilizzo della memoria condivisa a 1 GB, ma ha fallito, poiché di default è impostata a 512 MB. Questo parametro sembra essere presente nello script di avvio, ma potrebbe essere utile averlo come opzione (eventualmente commentata di default) nel file .yml.

Puoi passare argomenti Docker personalizzati per sovrascrivere quelli predefiniti che forniamo utilizzando --docker-args.

Credo che assomiglierà a qualcosa del genere: ./launcher start app --docker-args "--shm-size=1024m"

7 Mi Piace

Purtroppo non ha funzionato quando l’ho provato. Penso che forse il contenitore debba essere ricostruito per aumentare la dimensione dello spazio di memoria condivisa? Ho dovuto modificare il valore nelle aree hard-coded nello script di avvio e poi ricostruire il contenitore perché avesse effettivamente effetto.

Questo probabilmente non sarebbe persistito tra aggiornamenti o ricostruzioni: dovresti modificarlo manualmente ogni volta.

1 Mi Piace

Quali comandi hai eseguito? Dovrai sicuramente ricostruire il container affinché l’opzione --shm-size abbia effetto.

2 Mi Piace

All’inizio ho solo fermato il contenitore, quindi ho eseguito il comando di avvio del launcher con quel parametro. Poi ho modificato manualmente i parametri --shm-size all’interno dello script del launcher stesso e ho ricostruito il contenitore. A quel punto il valore è stato corretto. Se sovrascrivi il parametro sulla riga di comando per ricostruire il contenitore, non perderesti la modifica se esegui un aggiornamento/ricostruzione tramite l’interfaccia /admin/upgrade? Per questo pensavo che potrebbe essere meglio renderlo un campo in app.yml, così rimarrebbe persistente durante le ricostruzioni e gli aggiornamenti del codice.

1 Mi Piace

Hmm, capisco che potrebbe essere utile. @sam, cosa ne pensi?

1 Mi Piace

Tuttavia, questo non ricompila mai il container, quindi è sicuro.

Non abbiamo già questa funzionalità, come da:

docker_args: .... nel tuo file yaml.

Non sono sicuro. Questo sovrascrive il file del launcher stesso? Vedo tre posizioni in cui l’opzione è hardcodata:

Dovremmo quindi risolvere il problema, ma la correzione richiede uno script bash molto, molto complesso. Sentiti libero di provarci.

La nostra funzione per ottenere gli argomenti Docker dovrebbe essere responsabile della gestione di shm-size, degli override dell’utente e dell’impostazione di un valore predefinito.

2 Mi Piace

Ciao @Ghan

Nel frattempo (a scopo di test, vedi avvertenza sotto), puoi modificare questo valore direttamente con Docker dopo la creazione del container, come segue:

  • Modifica direttamente il file /var/lib/docker/containers/$CONTAINER_ID/hostconfig.json.
  • Ad esempio, modifica il valore di ShmSize nel file sopra.
  • Arresta e riavvia il container.

Nel file hostconfig del nostro container Docker, appare così:

"ShmSize":536870912,

Spero sia utile.

Avvertenza: Alcuni utenti hanno segnalato che è necessario arrestare il servizio Docker prima di modificare hostconfig.json (altrimenti le modifiche verranno sovrascritte). Tuttavia, non ho testato personalmente questa situazione. Ovviamente, una soluzione launcher è migliore :slight_smile:

Qualcuno sa qual è la soluzione attuale per aumentare shm_size?

Modifica: Sembra che sia ancora codificato in modo fisso.

Thread pertinente: