Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ほんとうはこわいAnsible

968 views

Published on

「3社共同企画 Ansible 夏祭り(2017/08/28)」用の公開用スライド
- https://connpass.com/event/61994/

Published in: Software
  • Be the first to comment

ほんとうはこわいAnsible

  1. 1. ほんとうはこわいAnsible @3社共同企画 Ansible 夏祭り
  2. 2. あんた誰? - name: せっかくなのでAnsibleっぽく profile: name: t_nakayama0714 birth: 1988/07/14 (29) address: Tokyo company: SIer interest: - SONY - Camera (α99Ⅱ) book: - DevOps導入指南 (共著)
  3. 3. 今日は何の話を? • Ansibleを使っていて嬉しかった話 • Ansibleを使っていて苦しかった話
  4. 4. 今日は何の話を? • Ansibleを使っていて嬉しかった話 • Ansibleを使っていて苦しかった話
  5. 5. 昔々あるところに...
  6. 6. 昔々あるところに... (意訳) とてもべんりだよ
  7. 7. どこに入れようかな
  8. 8. どこに入れようかな たいしたことない負荷だし いいだろう あそこのサーバに 入れさせて下さい
  9. 9. てなわけで使い始めてみた
  10. 10. アップデートも順調 1.9.4 ↘ 2.0.0 ↙ 2.1.0 ↘ 2.2.0 ↙ _人人人人_ > 2.3.0 <  ̄^Y^Y^Y^ ̄
  11. 11. ところが...(お約束)
  12. 12. 鳴り響くZabbixのアラート
  13. 13. CPUがやばい
  14. 14. CPUがやばい メモリもやばい
  15. 15. CPUがやばい 他のアプリにまで 影響が... メモリもやばい
  16. 16. 蘇る記憶
  17. 17. 蘇る記憶 たいしたことない負荷
  18. 18. つらい
  19. 19. あれは何だったのか
  20. 20. 事象のポイント • とあるPlaybookを実行していた – include を2階層の with_items でまわす – まわされる item はそこそこでかい • Ansibleプロセスがリソースを大きく消費 – CPUは1コアまるまる – メモリは1プロセスで10GBにも達する(白目)
  21. 21. ググってみる
  22. 22. 怪しいIssueが2つ • Extreme Resource Usage During include_role w/ with_items #24891
  23. 23. 怪しいIssueが2つ • Extreme Resource Usage During include_role w/ with_items #24891 Extreme Resource Usage
  24. 24. 怪しいIssueが2つ • Nested includes cause "exponential" growth of consumed memory #27024
  25. 25. 怪しいIssueが2つ • Nested includes cause "exponential" growth of consumed memory #27024 "exponential" growth
  26. 26. エビデンスをたのむ
  27. 27. やってみる
  28. 28. 検証環境 • 1サーバ + 3ノード – 2vCPU, 16GB – 1vCPU, 512MB • Ansibleバージョンを切り替えながら Issueに書いてあったPoCコードをまわす – 対象バージョンはv2以降 • https://github.com/t-nakayama0714/ansible_problem_poc – 実行状況をDatadogでモニタリング 2.0.0.0 ... 2.3.2.0
  29. 29. 結果 メモリ使用量(サーバ)
  30. 30. 結果 メモリ使用量(サーバ) 何もなければ 1GBちょい 2.3.0.0が一番ひどい 7GB超 バージョン切替ごとに sleepさせている ここから2.2.0.0
  31. 31. 結果 • nested includeは確かにまずいらしい • 他のIssueと合わせて考えると – include – include_role – with_* の組み合わせ(の一部)がまずそう • ご利用は計画的に...!
  32. 32. _人人人人人人人人_ > Ansibleこわい <  ̄Y^Y^Y^Y^Y^Y^Y^ ̄
  33. 33. おまけ メモリ使用量(サーバ) CPU使用率(サーバ)
  34. 34. おまけ メモリ使用量(サーバ) CPU使用率(サーバ) 2.2以前はむしろ CPUやばくね...? 約10分
  35. 35. うっ...目が...!
  36. 36. ありがとうございました

×