Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Seleniumでイキってたらサーバを絞め落としかけてた話
Search
kenFuji
June 08, 2022
Programming
0
710
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
ノイジーネイバー問題を解決する 公平なキューイング
occhi
0
110
CSC307 Lecture 05
javiergs
PRO
0
500
SourceGeneratorのススメ
htkym
0
200
Python’s True Superpower
hynek
0
100
フロントエンド開発の勘所 -複数事業を経験して見えた判断軸の違い-
heimusu
7
2.8k
Data-Centric Kaggle
isax1015
2
780
Amazon Bedrockを活用したRAGの品質管理パイプライン構築
tosuri13
5
800
余白を設計しフロントエンド開発を 加速させる
tsukuha
7
2.1k
Oxlintはいいぞ
yug1224
5
1.4k
カスタマーサクセス業務を変革したヘルススコアの実現と学び
_hummer0724
0
740
インターン生でもAuth0で認証基盤刷新が出来るのか
taku271
0
190
OCaml 5でモダンな並列プログラミングを Enjoyしよう!
haochenx
0
150
Featured
See All Featured
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
170
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.1k
GitHub's CSS Performance
jonrohan
1032
470k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
How to Think Like a Performance Engineer
csswizardry
28
2.5k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
280
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
72
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.3k
Designing for Performance
lara
610
70k
The Limits of Empathy - UXLibs8
cassininazir
1
220
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
110
The Curious Case for Waylosing
cassininazir
0
240
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 自動化 !
おわり