Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

自己紹介 ● 名前 ○ Ken Fujita ● 職業 ○ ネットワークエンジニア(今年で新卒3年目) ● やってること ○ NW保守、ツール作成、営業・窓口サポートなど ○ CRE? ● 最近のマイブーム ○ PS5 ○ 映画 ○ そば

Slide 3

Slide 3 text

なにをしたか ● 手作業が多かった業務を自動化したよ ● ブラウザ操作が主だったのでSeleniumで自動化できたよ ● いけたと思ったらサーバのリソースを食いつぶしていたよ

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

自動化完全に理解した

Slide 8

Slide 8 text

自動化完全に理解した?

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

ある日 ● 上司からチャットが飛ぶ Pythonスクリプト動かしたら “Error: Too many open files” って出てきたんだけど心当たりある? → 嫌な予感がしたので調査した

Slide 11

Slide 11 text

調査の結果 ● エラー文でググったところ、ファイルディスクリプタ上限に引っかかった? ○ 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

Slide 12

Slide 12 text

後日 ● 上司からチャットが飛ぶ “Error: Too many open files” ↑の原因わかりました

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

原因 ● コード例

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

教訓 ● エラー文や行動から起きていることを想像する ○ Too many open files ○ 自動化スクリプトから chromeを立ちあげた → プロセス周りも調べてみる( psコマンド等) ● 何か起きた時のことを想定して設計する ○ フェールセーフ ○ 今回だと異常終了時でもプロセスを閉じるなど

Slide 19

Slide 19 text

まとめ Let’s try 自動化 !

Slide 20

Slide 20 text

おわり