Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Seleniumでイキってたらサーバを絞め落としかけてた話

 Seleniumでイキってたらサーバを絞め落としかけてた話

2022/06/08に開催された「自動化大好きエンジニアLT会 - vol.7」にて発表したときの資料です。
https://rakus.connpass.com/event/245663/

52b9da1c8c4810664baa2bdd3ec8e608?s=128

kenFuji

June 08, 2022
Tweet

Other Decks in Programming

Transcript

  1. Seleniumでイキってたら サーバを絞め落としかけてた話 2022 06/08 自動化LT#7

  2. 自己紹介 • 名前 ◦ Ken Fujita • 職業 ◦ ネットワークエンジニア(今年で新卒3年目)

    • やってること ◦ NW保守、ツール作成、営業・窓口サポートなど ◦ CRE? • 最近のマイブーム ◦ PS5 ◦ 映画 ◦ そば
  3. なにをしたか • 手作業が多かった業務を自動化したよ • ブラウザ操作が主だったのでSeleniumで自動化できたよ • いけたと思ったらサーバのリソースを食いつぶしていたよ

  4. どんな業務か • メンテ情報をカレンダーアプリに登録する作業

  5. Seleniumで自動化した • メールコピー~登録までを自動化 • メール送信できるWebフォームも作成 • フォーマットが統一されより自動化しやすくなった

  6. フロー図 自動化ツール (Selenium) AP Server 窓口 関係者 chrome (webdriver)

  7. 自動化完全に理解した

  8. 自動化完全に理解した?

  9. ある日 • 上司からチャットが飛ぶ Pythonスクリプト動かしたら “Error: Too many open files” って出てきたんだけど心当たりある?

  10. ある日 • 上司からチャットが飛ぶ Pythonスクリプト動かしたら “Error: Too many open files” って出てきたんだけど心当たりある?

    → 嫌な予感がしたので調査した
  11. 調査の結果 • エラー文でググったところ、ファイルディスクリプタ上限に引っかかった? ◦ https://e-words.jp/w/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%83%87%E3%82% A3%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%82%BF.html • 設定変更するものの状況変わらず ◦ “Too

    many open files”は出続ける ◦ スクリプト自体は正常に動作する • 何だか知らんがとにかくよし! /etc/security/limits.conf * soft nofile 65536 * hard nofile 65536 # ulimit -n https://akishin.hatenablog.jp/entry/20130213/13 60711554
  12. 後日 • 上司からチャットが飛ぶ “Error: Too many open files” ↑の原因わかりました

  13. 後日 • 上司からチャットが飛ぶ “Error: Too many open files” ↑の原因わかりました chromeのプロセスがサーバ内に数百個残

    り続けていたのが原因でした
  14. None
  15. 原因 • コード例

  16. 原因 • コード例 • 例外処理がなく エラー発生時にchrome プロセスが残り続ける • デバッグしながら進めた ので数が膨れ上がった

  17. 対策 • エラーハンドリングを行う • with構文でも良いらしい ◦ https://qiita.com/yuki-k/items/ aeb4ec8f10c391ca1037 #with%E6%A7%8B%E6%96 %87%E3%82%92%E4%BD

    %BF%E3%81%86
  18. 教訓 • エラー文や行動から起きていることを想像する ◦ Too many open files ◦ 自動化スクリプトから

    chromeを立ちあげた → プロセス周りも調べてみる( psコマンド等) • 何か起きた時のことを想定して設計する ◦ フェールセーフ ◦ 今回だと異常終了時でもプロセスを閉じるなど
  19. まとめ Let’s try 自動化 !

  20. おわり