障害内容
コンテナから見たストレージの性能が異常に低い。
Warning: Invalid argument supplied for foreach() in /home/valinux/www/valinux/source/htdocs/wp/wp-content/themes/valinux/mvc/view/technologylibrary/case-detail.php on line 106
現象
ベアメタルで動かしていたアプリケーションを Docker コンテナ化して運用しようとしているが、性能が出ない。どうやらストレージの性能が出せていないようだ。
Warning: Invalid argument supplied for foreach() in /home/valinux/www/valinux/source/htdocs/wp/wp-content/themes/valinux/mvc/view/technologylibrary/case-detail.php on line 106
調査
- 調査手法: コンテナホストでの sar 調査
コンテナホストで動作していた sar (sysstat) を調査したところ、高負荷時にストレージの性能が限界に達していた。コンテナのファイルシステムにアプリケーションのデータを保存しようとしていたのが原因。
- 解決策
ボリュームを利用するようにすることで性能もベアメタルと同等に改善した
Warning: Invalid argument supplied for foreach() in /home/valinux/www/valinux/source/htdocs/wp/wp-content/themes/valinux/mvc/view/technologylibrary/case-detail.php on line 106
その他
かつて、コンテナのファイルシステムは、差分ファイルシステムの実現のために aufs (Another Union Filesystem) を利用しており、性能や安定性に問題がありました。
現在では、device mapper を使ったものなどが主流ですが、コンテナ内のファイルシステムは永続的ではないため、アプリケーションデータはボリュームに保存することが推奨されています。
Warning: Invalid argument supplied for foreach() in /home/valinux/www/valinux/source/htdocs/wp/wp-content/themes/valinux/mvc/view/technologylibrary/case-detail.php on line 106