この「問題」が単にLXCまたはzfsの制限なのか、この問題がUbuntu固有のものなのか、問題の原因を見つけるのにあまり運がありませんでした。
問題は非常に単純ですapt-get
は、コンテナ内で実行すると非常に遅くなります。
apt-get
パッケージリストの読み取り時に約30秒間ハングします(実行後apt-get update
例えば)
Reading package lists... 99%
また、新しいソフトウェアをインストールするときにハングします。たとえば、strace
をインストールすると、次のようにハングします。
Setting up strace (4.5.20-2.3ubuntu1) ...
Zfsバッキングストアでlxcのデイリービルドを使用しています。
OPのソリューションが質問から削除されました:
さらに掘り下げて、同僚の助けを借りて解決策を見つけました。
まず、
strace
を使用して、どこにぶら下がっていたかを見つけました。strace apt-get update
そして、それがぶら下がっていることに気づいた
msync(0x7f02a57b1000, 37879664, MS_SYNC ...
調査では、これはディスクI/Oに関連していることが示唆されました。
そこで、
iostat
をインストールして実行しました。Sudo apt-get install sysstat Sudo iostat -x 1
ディスク使用率は約90%でした。これにより、ディスクI/Oのボトルネックが確認されました。
私の同僚は、ZFSの同期ファイル同期をオフに切り替えることを提案しました。
zfs set sync=disabled pool/fs
これで問題が解決しました!
これがバグなのか機能なのかはまだ議論の余地があるため、この問題については数日間未回答のままにします。