Mysql
 sql >> Database >  >> RDS >> Mysql

Problemi di prestazioni durante l'esecuzione di un database in un contenitore Docker

Docker stesso impone un sovraccarico minimo, isola semplicemente il processo da altri processi sull'host. Tuttavia, ci sono molte cose che puoi fare per ridurre le prestazioni di un container:

  1. Eseguilo all'interno di Windows/MacOS fornendo alla VM incorporata solo una frazione della memoria/CPU del sistema operativo principale.
  2. Limita la CPU o le risorse di memoria all'interno del contenitore.
  3. Avvia molti container sul tuo host. Docker non è magico, se 10 istanze di Java ciascuna che utilizzano 2 giga di RAM portano l'host a eseguire una scansione al di fuori del container, non funzioneranno meglio all'interno dei container.
  4. Complicazioni di rete. Per impostazione predefinita, ogni contenitore viene avviato su un bridge di rete isolato, dove l'IO potrebbe richiedere un po' più di tempo con gli hop aggiuntivi. E se il tuo DNS non è configurato correttamente, potresti notare ulteriori ritardi dovuti alle ricerche non riuscite.
  5. I requisiti bare metal come l'accesso diretto al disco non sono consentiti per impostazione predefinita in Docker. Puoi concedere l'accesso a dispositivi specifici, ma in caso contrario la versione containerizzata dell'app viene isolata intenzionalmente.
  6. I dati nei volumi possono risiedere in una posizione meno efficiente. Per impostazione predefinita è il tuo filesystem /var/lib/docker, ma potresti facilmente puntarlo a un mount NFS dove le prestazioni sarebbero anche peggiori.
  7. DB non configurato correttamente, ad es. dimenticando di creare un indice.

In breve, è improbabile che il contenitore stesso sia il problema, ma assicurati di fare un confronto mele con mele.