Mysql
 sql >> Base de données >  >> RDS >> Mysql

Problèmes de performances lors de l'exécution d'une base de données dans un conteneur Docker

Docker lui-même impose très peu de surcharge, il isole simplement le processus des autres processus sur l'hôte. Cependant, vous pouvez faire beaucoup de choses pour dégrader les performances d'un conteneur :

  1. Exécutez-le sous Windows/MacOS en n'accordant à la VM intégrée qu'une fraction de la mémoire/du processeur de l'OS parent.
  2. Restreindre les ressources de processeur ou de mémoire à l'intérieur du conteneur.
  3. Lancez de nombreux conteneurs sur votre hôte. Docker n'est pas magique, si 10 instances de Java utilisant chacune 2 Go de RAM amènent l'hôte à explorer en dehors du conteneur, elles ne fonctionneront pas mieux à l'intérieur des conteneurs.
  4. Complications de mise en réseau. Chaque conteneur est par défaut lancé sur un pont réseau isolé, où les E/S peuvent prendre un peu plus de temps avec les sauts supplémentaires. Et si votre DNS n'est pas correctement configuré, vous pouvez constater des retards supplémentaires dus aux échecs de recherche.
  5. Les exigences Bare Metal telles que l'accès direct au disque ne sont pas autorisées par défaut dans Docker. Vous pouvez donner accès à des appareils spécifiques, sinon la version conteneurisée de l'application est intentionnellement isolée.
  6. Les données en volumes peuvent résider dans un emplacement moins efficace. Par défaut, il s'agit de votre système de fichiers /var/lib/docker, mais vous pouvez facilement le faire pointer vers un montage NFS où les performances seraient encore pires.
  7. DB mal configurée, par ex. oubli de créer un index.

En bref, il est peu probable que le conteneur soit le problème lui-même, mais assurez-vous de comparer des pommes avec des pommes.