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.
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.
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.
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.
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ì:
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