Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Seleniumでイキってたらサーバを絞め落としかけてた話
kenFuji
June 08, 2022
Programming
0
360
Seleniumでイキってたらサーバを絞め落としかけてた話
2022/06/08に開催された「自動化大好きエンジニアLT会 - vol.7」にて発表したときの資料です。
https://rakus.connpass.com/event/245663/
kenFuji
June 08, 2022
Tweet
Share
Other Decks in Programming
See All in Programming
Node.jsデザインパターンを読んで
mmmommm
0
2.7k
Beyond Micro Frontends: Frontend Moduliths for the Enterprise @wad2022
manfredsteyer
PRO
0
130
Android Compose Component - mapping.
taehwandev
0
140
iOS 16からのロック画面Widget争奪戦に備える
tsuzuki817
0
240
Value and Record Types
hschwentner
0
550
Chart実装が楽になりました。
keisukeyamagishi
0
120
インターン生・新卒向け、学校でもっと教えてほしいITエンジニア基本スキル
nearme_tech
0
130
Java アプリとAWS の良い関係 - AWS でJava アプリを実行する一番簡単な方法教えます / AWS for Javarista
kanamasa
2
1.3k
io22 extended What's new in app performance
veronikapj
0
340
[월간 데이터리안 세미나 6월] 스스로 성장하는 분석가 커리어 이야기
datarian
0
220
クックパッドマートの失敗したデータ設計 Before / After 大放出
mokuzon
0
160
Modern Android Developer ~ 안내서
pluu
1
640
Featured
See All Featured
Producing Creativity
orderedlist
PRO
334
37k
VelocityConf: Rendering Performance Case Studies
addyosmani
316
22k
Robots, Beer and Maslow
schacon
152
7.1k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
349
27k
Reflections from 52 weeks, 52 projects
jeffersonlam
337
17k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
212
20k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
498
130k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
7
1.1k
Rebuilding a faster, lazier Slack
samanthasiow
62
7.2k
Agile that works and the tools we love
rasmusluckow
319
19k
The Art of Programming - Codeland 2020
erikaheidi
32
11k
Code Reviewing Like a Champion
maltzj
506
37k
Transcript
Seleniumでイキってたら サーバを絞め落としかけてた話 2022 06/08 自動化LT#7
自己紹介 • 名前 ◦ Ken Fujita • 職業 ◦ ネットワークエンジニア(今年で新卒3年目)
• やってること ◦ NW保守、ツール作成、営業・窓口サポートなど ◦ CRE? • 最近のマイブーム ◦ PS5 ◦ 映画 ◦ そば
なにをしたか • 手作業が多かった業務を自動化したよ • ブラウザ操作が主だったのでSeleniumで自動化できたよ • いけたと思ったらサーバのリソースを食いつぶしていたよ
どんな業務か • メンテ情報をカレンダーアプリに登録する作業
Seleniumで自動化した • メールコピー~登録までを自動化 • メール送信できるWebフォームも作成 • フォーマットが統一されより自動化しやすくなった
フロー図 自動化ツール (Selenium) AP Server 窓口 関係者 chrome (webdriver)
自動化完全に理解した
自動化完全に理解した?
ある日 • 上司からチャットが飛ぶ Pythonスクリプト動かしたら “Error: Too many open files” って出てきたんだけど心当たりある?
ある日 • 上司からチャットが飛ぶ Pythonスクリプト動かしたら “Error: Too many open files” って出てきたんだけど心当たりある?
→ 嫌な予感がしたので調査した
調査の結果 • エラー文でググったところ、ファイルディスクリプタ上限に引っかかった? ◦ 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
後日 • 上司からチャットが飛ぶ “Error: Too many open files” ↑の原因わかりました
後日 • 上司からチャットが飛ぶ “Error: Too many open files” ↑の原因わかりました chromeのプロセスがサーバ内に数百個残
り続けていたのが原因でした
None
原因 • コード例
原因 • コード例 • 例外処理がなく エラー発生時にchrome プロセスが残り続ける • デバッグしながら進めた ので数が膨れ上がった
対策 • エラーハンドリングを行う • with構文でも良いらしい ◦ https://qiita.com/yuki-k/items/ aeb4ec8f10c391ca1037 #with%E6%A7%8B%E6%96 %87%E3%82%92%E4%BD
%BF%E3%81%86
教訓 • エラー文や行動から起きていることを想像する ◦ Too many open files ◦ 自動化スクリプトから
chromeを立ちあげた → プロセス周りも調べてみる( psコマンド等) • 何か起きた時のことを想定して設計する ◦ フェールセーフ ◦ 今回だと異常終了時でもプロセスを閉じるなど
まとめ Let’s try 自動化 !
おわり