web-dev-qa-db-fra.com

apt-get dans le conteneur LXC est très lent sur Ubuntu Server 12.04

Je n'ai pas eu beaucoup de chance en recherchant la source du problème, si ce "problème" est simplement une limitation de LXC ou de zfs, ou si ce problème est spécifique à Ubuntu.

Le problème est tout simplement que apt-get est très lent lorsqu'il est exécuté dans un conteneur.

apt-get s'interrompt pendant environ 30 secondes lors de la lecture des listes de paquetages (après avoir exécuté apt-get update par exemple)

Reading package lists... 99%

Il se bloque également lors de l'installation d'un nouveau logiciel. Installer strace par exemple, il se bloque ici:

Setting up strace (4.5.20-2.3ubuntu1) ...

J'utilise la construction quotidienne de lxc avec zfs backing store.

4
badsyntax

La solution d'OP supprimée de la question:

J'ai encore creusé et j'ai trouvé une solution avec l'aide d'un collègue.

D'abord, j'ai utilisé strace pour savoir où elle était suspendue:

strace apt-get update

Et remarqué qu'il était accroché

msync(0x7f02a57b1000, 37879664, MS_SYNC ...

La recherche a suggéré que cela était lié aux E/S du disque.

J'ai donc installé et exécuté iostat:

Sudo apt-get install sysstat
Sudo iostat -x 1

Le disque util était à environ 90%. Ceci a confirmé le goulot d'étranglement des E/S du disque.

Mon collègue m'a suggéré d'essayer de désactiver la synchronisation synchrone des fichiers pour ZFS:

zfs set sync=disabled pool/fs

Et cela a résolu mes problèmes!

Qu'il s'agisse ou non d'un bug ou d'une fonctionnalité est encore en débat, je vais donc laisser cette question sans réponse pendant quelques jours.

2
Zanna