LoginSignup
0
0

More than 3 years have passed since last update.

VPS上のdocker-composeがハングする(異常に遅い)問題

Last updated at Posted at 2021-03-30

環境

  • Ubuntu 20.04
  • docker 20.10.5
  • docker-compose 1.28.6

問題

バーチャルプライベートサーバー(VPS)にdockerとdocker-composeを

辺りを参考にしてインストールしたところ、インストール自体はうまく行ったが、docker-compose が異常に遅い。ほとんどハングしている感じになった。

$ time docker-compose --version
docker-compose version 1.28.6, build 5db8d86f

real    0m55.659s
user    0m0.827s
sys     0m0.144s

このくらいで済む時もあるし、もっと遅かったり、もうちょっと早い時もある。

原因

乱数を作るデバイス /dev/random が、VPSだとエントロピーが足りないらしく、docker-compose が乱数を使おうとしたときにたっぷり待たされてしまうことが原因らしい。以下に該当しそうな議論があった。

実際それが原因かどうかは、entropy の大きさを調べて見ればいい。

$ cat /proc/sys/kernel/random/entropy_avail 
45

この数字が小さい(< 1000)と python の乱数生成が遅くなって、python で書かれている docker-compose が遅くなるということらしい。

解決策

haveged と言うパッケージをインストールする。

$ sudo apt-get install -y haveged

解決したか確認。

$ time docker-compose --version
docker-compose version 1.28.6, build 5db8d86f

real    0m0.906s
user    0m0.784s
sys     0m0.121s

1秒以下ということで、こんなもんかな。

この haveged は、https://wiki.archlinux.jp/index.php/Haveged に説明がある通りで、「haveged は仮想環境で質の高いエントロピーを作れるのかどうか疑問があります。Haveged は rdtsc 命令を使用していますが、仮想マシンでこの命令が仮想化されるとエントロピーが低品質になってしまいます。」と言うことです。/dev/random で得られる乱数の質に影響があるかもしれないことを理解した上で使ってください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0